python简单的爬取网页上的图片

淩亂°似流年 2023-01-05 01:20 337阅读 0赞

如果需要大量的图片,在网页中一个一个下载,耗费时间太长了,如果可以有程序自动帮我们下载图片,这样就最好了,既快速又方便。

接下来,我将把学习笔记记录如下,以下内容仅仅是突击学习、尽快使用的效果,而对于python爬取还是有很多很多不了解的地方。

参考链接:https://www.cnblogs.com/dearvee/p/6558571.html

参考链接:https://blog.csdn.net/zjy18886018024/article/details/80001097

参考链接:https://www.cnblogs.com/roboot/p/11410323.html

参考链接:https://www.jb51.net/article/168484.htm

参考链接:https://blog.csdn.net/qq_38412868/article/details/82080260

源码示例

参考链接:https://www.jb51.net/article/168484.htm

给出一个链接,https://tieba.baidu.com/p/2460150866?red_tag=2171084898,里面有很多图片,需要把它们全部下载到一个本地文件夹内。

  1. import urllib.request
  2. import re
  3. import os
  4. import urllib
  5. #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码
  6. def getHtml(url):
  7. page = urllib.request.urlopen(url)
  8. html = page.read()
  9. return html.decode('UTF-8')
  10. def getImg(html):
  11. reg = r'src="(.+?\.jpg)" pic_ext'
  12. imgre = re.compile(reg)
  13. imglist = imgre.findall(html)#表示在整个网页中过滤出所有图片的地址,放在imglist
  14. x = 0
  15. path = 'E:/Python/get_picture/picture'
  16. # 将图片保存
  17. if not os.path.isdir(path):
  18. os.makedirs(path)
  19. paths = path+'/' #保存在test路径下
  20. for imgurl in imglist:
  21. urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打开imglist中保存的图片网址,并下载图片保存在本地,format格式化字符串
  22. x = x + 1
  23. return imglist
  24. html = getHtml("http://tieba.baidu.com/p/2460150866")#获取该网址网页详细信息,得到的html就是网页的源代码
  25. print (getImg(html)) #从网页源代码中分析并下载保存图片

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lxbF82MTc1NDAyOTg_size_16_color_FFFFFF_t_70

源码示例

参考链接:https://blog.csdn.net/qq_38412868/article/details/82080260

需要下载图片的链接:http://desk.zol.com.cn/dongman/longmao/

查看网页源代码:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lxbF82MTc1NDAyOTg_size_16_color_FFFFFF_t_70 1

  1. from bs4 import BeautifulSoup
  2. import requests
  3. def download(img_url,headers,n):
  4. req = requests.get(img_url, headers=headers)
  5. name = '%s'%n+'='+img_url[-15:]
  6. path = r'E:/Python/get_picture/picture'
  7. file_name = path + '\\' + name
  8. f = open(file_name, 'wb')
  9. f.write(req.content)
  10. f.close
  11. def parses_picture(url,headers,n):
  12. url = r'http://desk.zol.com.cn/' + url
  13. img_req = requests.get(url, headers=headers)
  14. img_req.encoding = 'gb2312'
  15. html = img_req.text
  16. bf = BeautifulSoup(html, 'lxml')
  17. try:
  18. img_url = bf.find('div', class_='photo').find('img').get('src')
  19. download(img_url,headers,n)
  20. url1 = bf.find('div',id='photo-next').a.get('href')
  21. parses_picture(url1,headers,n)
  22. except:
  23. print(u'第%s图片下载完成'%n)
  24. if __name__=='__main__':
  25. url='http://desk.zol.com.cn/dongman/longmao/'
  26. headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
  27. req = requests.get(url=url, headers=headers)
  28. req=requests.get(url=url,headers=headers)
  29. req.encoding = 'gb2312'
  30. html=req.text
  31. bf=BeautifulSoup(html,'lxml')
  32. targets_url=bf.find_all('li',class_='photo-list-padding')
  33. n=1
  34. for each in targets_url:
  35. url = each.a.get('href')
  36. parses_picture(url,headers,n)
  37. n=n+1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lxbF82MTc1NDAyOTg_size_16_color_FFFFFF_t_70 2

发表评论

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

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

相关阅读