爬取一个福利站

作者: 大威锅丶 | 来源:发表于2020-06-13 09:56 被阅读0次
    爬取内容.png

    你懂得...
    嘿嘿嘿~
    先上代码:

    '''
    Data:2020
    --- 大威锅丨DaWeiGuo ---
    '''
    import requests
    import re
    from bs4 import BeautifulSoup
    import os#导入所需要的库
    
    
    url='http://www.win4000.com/zt/xinggan.html'
    
    #从url提取每个系列对应的链接
    def GetHtml(url):
        try:
            r=requests.get(url)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            txt = r.text
            accessUrl(txt)#将返回的网页信息传入accessUrl函数
        except :
            print('访问页面出错!')
    
    #提取每个系列对应的网页链接
    def accessUrl(txt):
        soup = BeautifulSoup(txt,'html.parser')
        tag_ul=soup.find_all('ul')
        url_list=re.findall('http://www.win4000.com/wallpaper_detail_[\d]*.html',str(tag_ul))
        browse_url(url_list)#将提取的链接以列表形式递给browse_url函数
    
    #循环每个链接
    def browse_url(url_list):
        for every_list in url_list:
            solve_url(every_list)#将循环的每个链接递给solve_url函数
    
    def solve_url(url_alone):
        url_alone_1=url_alone.split('_')                #
        url_alone_last=url_alone_1[-1]                  #
        url_alone_num=url_alone_last.split('.')[-2]     # 从链接提取相关信息为后面组成链接实现翻页做铺垫      
        # print(url_alone_num)
        try:    
            for i  in range(0,15):#实现翻页,并保存每页的图片,有的系列图片是翻一次页数字加二有的是加1,这里就写0-15,
                             #                   可能会出现一个额系列没爬完的情况
                if i == 0:#因为第一页的链接与后面的链接相比少了_数字部分,所以分开处理
                    get_photo_url(url_alone)#将第一页的链接递给get_photo_url函数处理
                else:
                    url_alone_compose='http://www.win4000.com/wallpaper_detail_'+url_alone_num+'_'+str(i)+'.html'
                    # print(url_alone_compose)
                    get_photo_url(url_alone_compose)#将重新组合的链接递给 get_photo_url函数处理
        except:
            print('图片页面不存在')
    
    
    #这个函数从网页提取图片所对应的链接
    def get_photo_url(url_photo):
        try:
            r=requests.get(url_photo)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            soup = BeautifulSoup(r.text,'html.parser')
            tag=soup.find(class_="pic-large")
            url_photo=tag['src']
            #print(url_photo)
            holdphoto(url_photo)#将提取的图片对应的链接交给holdphoto(url_photo)函数进行保存
        except:
             print('获取图片链接失败')
    #图片保存函数
    def holdphoto(url_photo):
        # root="C:/Users/l1768/Desktop/福利图/"#图片要储存的文件夹
        root = os.path.abspath(os.path.dirname(__file__))
        root = root + '\\福利图/'
        name=url_photo.split('/')[-1]#提取每个图片的名字
        path=root+name#组成图片路径
        try:
            if not os.path.exists(root):#判断文件夹是否存在,不存在则创建
                os.mkdir(root)
            if not os.path.exists(path):#判断图片是否已经存在,不存在则保存
                r=requests.get(url_photo)
                with open(path,"wb") as f:
                    f.write(r.content)
                    f.close()
                    print('---'+name+"保存成功"+'---')
            else:
                print("---文件已存在---")
        except:
            print("---图片爬取失败---")
    
    if __name__ == "__main__":
        print('----开始爬取图片----')
        GetHtml(url)
        print('----爬取结束----')
    
    
    运行图.png

    相关文章

      网友评论

        本文标题:爬取一个福利站

        本文链接:https://www.haomeiwen.com/subject/iakatktx.html