python爬虫实战(一)--爬取知乎话题图片

逃离我推掉我的手 2022-06-08 08:10 426阅读 0赞

原文链接python爬虫实战(一)–爬取知乎话题图片

前言

在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫。
知识准备:
1.python基础知识
2.urllib库使用
3.http基本知识
4.html/js基本知识。
环境准备:
1.linux
2.python3

话不多说,开始

爬取目标

本次爬取的目标是知乎话题下的图片。

分析

以知乎话题你见过哪些谜之笑点的图片为例。
用浏览器打开该链接。鼠标右键-查看源代码。可以看到,图片的url在img标签中,那么在爬取到该网页内容之后,可以使用正则表达式,获取图片的url,再根据url将图片下载下来,便大功告成了。

代码

  1. #!/usr/bin/python3
  2. #coding=utf-8
  3. import urllib.request as request
  4. import urllib.parse as parse
  5. import string
  6. import sys
  7. import re
  8. import os
  9. import urllib.error as error
  10. '''
  11. 获取url中的图片
  12. url:链接地址
  13. dirpath:保存路径
  14. '''
  15. def getUrlImage(url,dirpath):
  16. dldNum=0
  17. data = request.urlopen(url).read()
  18. if not os.path.isdir(dirpath):
  19. os.makedirs(dirpath)
  20. page_data = data.decode('gbk','ignore')
  21. #获取img标签数据
  22. page_image = re.compile('<img src=\"(.+?)\"')
  23. for image in page_image.findall(page_data):
  24. #匹配数据中的图片
  25. pattern = re.compile(r'^https://.*.(jpg|png|gif|jpeg)$')
  26. if pattern.match(image):
  27. print (image)
  28. try:
  29. extension = GetFileNameAndExt(image)
  30. image_data = request.urlopen(image).read()
  31. image_path = dirpath+'/'+str(dldNum)+extension
  32. dldNum += 1
  33. print(image_path)
  34. with open(image_path, 'wb') as image_file:
  35. image_file.write(image_data)
  36. image_file.close()
  37. except error.URLError as e:
  38. print('Download failed')
  39. '''
  40. 获取文件名中的扩展名
  41. '''
  42. def GetFileNameAndExt(filename):
  43. (filepath,tempfilename) = os.path.split(filename);
  44. (shotname,extension) = os.path.splitext(tempfilename);
  45. return extension
  46. '''
  47. 入口函数
  48. 带两个参数
  49. '''
  50. if __name__ == "__main__":
  51. if(len(sys.argv) < 2):
  52. print("usage:./download_spider.py url savePath")
  53. else:
  54. print("the url is "+str(sys.argv[1]))
  55. print("the save path is "+str(sys.argv[2]))
  56. url = sys.argv[1]
  57. savePath = sys.argv[2]
  58. getUrlImage(url,savePath)

运行

有两个参数,第一个参数是url,即话题的链接,第二个参数是所要保存图片的路径。
在linux下运行

  1. ./getZhiHuImage.py https://www.zhihu.com/question/41432739 /home/spider/

将会在目的目录下发现下载好的图片。39 /home/spider/
“`
将会在目的目录下发现下载好的图片。

发表评论

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

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

相关阅读