• Python 爬取高清桌面壁纸


    今天写了一个脚本用来爬取ZOL桌面壁纸网站的高清图片;

    链接:http://desk.zol.com.cn/1920x1080/

    本程序只爬了美女板块的图片,若要下载其他板块,只需修改程序中的”meinv“即可


    代码如下:

    #coding=utf-8
    import urllib  
    import re
    import time
    class Spider:
        baseUrl='http://desk.zol.com.cn/'
        pic_index=0
        itemGroupPic=[]
        def __init__(self,page_count):
            time.sleep(1)
            url=self.baseUrl+"meinv/1920x1080/"
            for i in range(10, page_count):
                time.sleep(5)
                html=self.getHtml(url,i)
                getbi=self.getPageImageGroup(html) 
                bizhi_url=self.getbizhiurlList(getbi)
        
        
        def getHtml(self,url,page_index):
            url=url+str(page_index)+".html"
            page = urllib.urlopen(url)
            html = page.read()
            return html
    
        def getPageImageGroup(self,html):
            reg=r'<a class="pic" href="/bizhi/.*?.html'  
            imgre=re.compile(reg)
            imagelist=re.findall(imgre,html)
            return imagelist
            
        def getbizhiurlList(self,imagelist):
            for iurl in imagelist:
                reg=r'bizhi/.*?.html'  
                imgre=re.compile(reg)
                itmeimageurl=re.findall(imgre,iurl)
                self.itemGroupPic.append(itmeimageurl)
               
        def GetCurrentUrlAndDownload(self,url):
            page = urllib.urlopen(url)
            html = page.read() #read()出来的文本和网页右键源代码有点出入,这里需要优化
            reg=r'<img id="bigImg" src="http://.*.jpg"'  
            imgre=re.compile(reg)
            urllist=re.findall(imgre,html)
            for _u in urllist:
                reg1=r'http://.*.jpg'  
                imgre1=re.compile(reg1)
                itmeimageurl=re.findall(imgre1,_u)
                print u'正在下载'+str(self.pic_index)+u'图片'
                #D:PictureAvi目录要事先创建好
                urllib.urlretrieve(itmeimageurl[0],'D:PictureAvi\%s.jpg' % self.pic_index)
                self.pic_index+=1
            #获取当前页面的url,next_html
            next_reg=r'<a id="pageNext" class="next" href=".*.html"'  
            next_imgre=re.compile(next_reg)
            next_urllist=re.findall(next_imgre,html)
            if(len(next_urllist)==0):
                return ""
            #获取真正的next_html
            next_reg_child=r'bizhi.*?.html'  
            next_imgre_child=re.compile(next_reg_child)
            real_url=re.findall(next_imgre_child,next_urllist[0])
            return real_url[0]
    
        def MatchUrl(self,imagelist):
            for imgurl in imagelist:
                url=self.baseUrl+imgurl[0]
                next_url=self.GetCurrentUrlAndDownload(url)
                #递归获取下一个url
                while(next_url != ''):
                    _itme_next_url=self.baseUrl+next_url
                    next_url=self.GetCurrentUrlAndDownload(_itme_next_url)
                
               
    
    if __name__ == '__main__':
        spider = Spider(15)
       
        spider.MatchUrl(spider.itemGroupPic)
        print u'结束下载'



    运行结果如下:




    运行环境是py2.7,原理很简单,并没有用到类似scrapy这样的框架,也没用什么动态获取

    1.通过urllib获取网页源代码

    2.找到规律,通过正则表达式找到url

    3.用urllib下载到本地文件



    未完待续。。。。。

  • 相关阅读:
    QQ恢复解散后的群聊或删除后的好友的方法
    微软双屏手机Surface Duo曝新料
    利用Travis CI+GitHub实现持续集成和自动部署
    利用echarts展示旅行足迹
    03_K近邻算法
    02_感知机算法
    《面试官之你说我听》:简明的图解Redis RDB持久化、AOF持久化
    【绝对有收获】看看?必须告诉你为什么要使用MQ消息中间件(图解版)
    推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题(图解版)
    利用window.performance.timing进行性能分析
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163514.html
Copyright © 2020-2023  润新知