今天写了一个脚本用来爬取ZOL桌面壁纸网站的高清图片;
链接:/1920x1080/
本程序只爬了美女板块的图片,若要下载其他板块,只需修改程序中的”meinv“即可
代码如下:
#coding=utf-8import urllib import reimport timeclass Spider:baseUrl='/'pic_index=0itemGroupPic=[]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 htmldef getPageImageGroup(self,html):reg=r'<a class="pic" href="/bizhi/.*?.html' imgre=pile(reg)imagelist=re.findall(imgre,html)return imagelistdef getbizhiurlList(self,imagelist):for iurl in imagelist:reg=r'bizhi/.*?.html' imgre=pile(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=pile(reg)urllist=re.findall(imgre,html)for _u in urllist:reg1=r'http://.*.jpg' imgre1=pile(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_htmlnext_reg=r'<a id="pageNext" class="next" href=".*.html"' next_imgre=pile(next_reg)next_urllist=re.findall(next_imgre,html)if(len(next_urllist)==0):return ""#获取真正的next_htmlnext_reg_child=r'bizhi.*?.html' next_imgre_child=pile(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)#递归获取下一个urlwhile(next_url != ''):_itme_next_url=self.baseUrl+next_urlnext_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下载到本地文件
未完待续。。。。。
如果觉得《Python 爬取高清桌面壁纸》对你有帮助,请点赞、收藏,并留下你的观点哦!