python爬虫一:必应图片(从网页源代码中找出图片链接然后下载)

举报
用户已注销 发表于 2021/11/19 06:09:50 2021/11/19
【摘要】 这里讲解最简单的爬虫:从网页源代码中找出图片链接然后下载 代码: #coding=utf-8#必应图片爬虫import reimport osimport urllib.requesturl = 'http://cn.bing.com/images/search?q=usb+pen&FORM=HDRSC2'coding ...

这里讲解最简单的爬虫:从网页源代码中找出图片链接然后下载

代码:


  
  1. #coding=utf-8
  2. #必应图片爬虫
  3. import re
  4. import os
  5. import urllib.request
  6. url = 'http://cn.bing.com/images/search?q=usb+pen&FORM=HDRSC2'
  7. coding = 'utf-8'
  8. thepath = 'D:\\'
  9. def get():
  10. try:
  11. html = urllib.request.urlopen(url).read().decode(coding)
  12. except:
  13. print('error')
  14. print(url)
  15. return
  16. title = re.search("<title>.*</title>", html).group()
  17. title = title[7:-20]
  18. pic_url = re.findall('http://.{1,100}.jpg|http://.{1,100}.png|http://.{1,100}.jpeg',str(html),re.IGNORECASE)
  19. pic_url = list(set(pic_url))
  20. path = thepath + title
  21. try:
  22. os.mkdir(path)
  23. except:
  24. return
  25. i = 1
  26. for each in pic_url:
  27. try:
  28. pic= urllib.request.urlopen(each,timeout=10).read()
  29. except:
  30. continue
  31. file = path + '\\' + title + str(i) + '.jpg'
  32. fp = open(file,'wb')
  33. fp.write(pic)
  34. fp.close()
  35. i=i+1
  36. if not os.listdir(path):
  37. os.removedirs(path)
  38. print('error')
  39. print(url)
  40. get()

解释:

(1)urlopen是打开url对应的网页,获取源代码

(2)title是网页标题,利用正则表达式从源代码中获取标题

(3)pic_url是图片url的列表,方法比较简单,直接取出以http://开头以jpg结尾的字符串,中间的长度在1-100之间,因为不同图片的url在网页源代码中是隔开的,所以这个简单的正则表达式匹配以jpg结尾的url的准确率很高,如果是jpeg等等,只要用re1|re2就行,但是对于一些奇怪的url,不以图片后缀作为图片url的后缀,那就找不到它

(4)path是要创建的文件夹路径,文件夹名字就是title

(5)再用urlopen就可以直接打开图片url下载图片,所有图片都用title1,title2...命名

(6)最后一步,如果创建了文件夹但是没有下载图片,就把文件夹删掉

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/76010849

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。