Python 爬取高清桌面壁纸

àì夳堔傛蜴生んèń 2022-06-06 01:47 355阅读 0赞

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

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

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

代码如下:

  1. #coding=utf-8
  2. import urllib
  3. import re
  4. import time
  5. class Spider:
  6. baseUrl='http://desk.zol.com.cn/'
  7. pic_index=0
  8. itemGroupPic=[]
  9. def __init__(self,page_count):
  10. time.sleep(1)
  11. url=self.baseUrl+"meinv/1920x1080/"
  12. for i in range(10, page_count):
  13. time.sleep(5)
  14. html=self.getHtml(url,i)
  15. getbi=self.getPageImageGroup(html)
  16. bizhi_url=self.getbizhiurlList(getbi)
  17. def getHtml(self,url,page_index):
  18. url=url+str(page_index)+".html"
  19. page = urllib.urlopen(url)
  20. html = page.read()
  21. return html
  22. def getPageImageGroup(self,html):
  23. reg=r'<a class="pic" href="/bizhi/.*?.html'
  24. imgre=re.compile(reg)
  25. imagelist=re.findall(imgre,html)
  26. return imagelist
  27. def getbizhiurlList(self,imagelist):
  28. for iurl in imagelist:
  29. reg=r'bizhi/.*?.html'
  30. imgre=re.compile(reg)
  31. itmeimageurl=re.findall(imgre,iurl)
  32. self.itemGroupPic.append(itmeimageurl)
  33. def GetCurrentUrlAndDownload(self,url):
  34. page = urllib.urlopen(url)
  35. html = page.read() #read()出来的文本和网页右键源代码有点出入,这里需要优化
  36. reg=r'<img id="bigImg" src="http://.*.jpg"'
  37. imgre=re.compile(reg)
  38. urllist=re.findall(imgre,html)
  39. for _u in urllist:
  40. reg1=r'http://.*.jpg'
  41. imgre1=re.compile(reg1)
  42. itmeimageurl=re.findall(imgre1,_u)
  43. print u'正在下载'+str(self.pic_index)+u'图片'
  44. #D:\PictureAvi目录要事先创建好
  45. urllib.urlretrieve(itmeimageurl[0],'D:\PictureAvi\%s.jpg' % self.pic_index)
  46. self.pic_index+=1
  47. #获取当前页面的url,next_html
  48. next_reg=r'<a id="pageNext" class="next" href=".*.html"'
  49. next_imgre=re.compile(next_reg)
  50. next_urllist=re.findall(next_imgre,html)
  51. if(len(next_urllist)==0):
  52. return ""
  53. #获取真正的next_html
  54. next_reg_child=r'bizhi.*?.html'
  55. next_imgre_child=re.compile(next_reg_child)
  56. real_url=re.findall(next_imgre_child,next_urllist[0])
  57. return real_url[0]
  58. def MatchUrl(self,imagelist):
  59. for imgurl in imagelist:
  60. url=self.baseUrl+imgurl[0]
  61. next_url=self.GetCurrentUrlAndDownload(url)
  62. #递归获取下一个url
  63. while(next_url != ''):
  64. _itme_next_url=self.baseUrl+next_url
  65. next_url=self.GetCurrentUrlAndDownload(_itme_next_url)
  66. if __name__ == '__main__':
  67. spider = Spider(15)
  68. spider.MatchUrl(spider.itemGroupPic)
  69. print u'结束下载'

运行结果如下:

Center

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

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

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

3.用urllib下载到本地文件

未完待续。。。。。

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读