网页爬虫抓取百度图片(来自《Python项目案例开发从入门到实战》(清华大学出版社郑秋生) )

优采云 发布时间: 2022-01-25 15:09

  网页爬虫抓取百度图片(来自《Python项目案例开发从入门到实战》(清华大学出版社郑秋生)

)

  来自《Python项目案例开发从入门到实战》(清华大学出版社,郑秋生,夏九杰主编)爬虫应用——抓取百度图片html

  本文使用请求库抓取某网站的图片。前面的博客章节介绍了如何使用 urllib 库来爬取网页。本文主要使用请求库来抓取网页内容。使用方法 基本一样,只是请求方法比较简单,还有一些正则表达式

  不要忘记爬虫的基本思想:函数

  1.指定要抓取的连接然后抓取网站源码网站

  2.提取你想要的内容,比如你想爬取图片信息,可以选择用正则表达式过滤或者使用提取

  标签的方法代码

  3.循环获取要爬取的内容列表,保存文件url

  这里的代码和我博客前几章的代码区别(图片爬虫系列一)是:spa

  1.reques库代码用于提取网页

  2.保存图片时,后缀不固定使用png或jpg,而是图片本身的后缀为htm

  3.保存图片时不要使用urllib.request.urlretrieve函数,而是使用文件读写操作保存图片博客

  具体代码如下图所示:

   1 # 使用requests、bs4库下载华侨大学主页上的全部图片

2 import os

3 import requests

4 from bs4 import BeautifulSoup

5 import shutil

6 from pathlib import Path # 关于文件路径操做的库,这里主要为了获得图片后缀名

7

8

9 # 该方法传入url,返回url的html的源代码

10 def getHtmlCode(url):

11 # 假装请求的头部来隐藏本身

12 headers = {

13 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'

14 }

15 # 获取网页

16 r = requests.get(url, headers=headers)

17 # 指定网页解析的编码格式

18 r.encoding = 'UTF-8'

19 # 获取url页面的源代码字符串文本

20 page = r.text

21 return page

22

23

24 # 该方法传入html的源代码,经过截取其中的img标签,将图片保存到本机

25 def getImg(page, localPath):

26 # 判断文件夹是否存在,存在则删除,最后都要从新新的文件夹

27 if os.path.exists(localPath):

28 shutil.rmtree(localPath)

29 os.mkdir(localPath)

30

31 # 按照Html格式解析页面

32 soup = BeautifulSoup(page, 'html.parser')

33 # 返回的是一个包含全部img标签的列表

34 imgList = soup.find_all('img')

35 x = 0

36 # 循环url列表

37 for imgUrl in imgList:

38 try:

39 # 获得img标签中的src具体内容

40 imgUrl_src = imgUrl.get('src')

41 # 排除 src='' 的状况

42 if imgUrl_src != '':

43 print('正在下载第 %d : %s 张图片' % (x+1, imgUrl_src))

44 # 判断图片是不是从绝对路径https开始,具体为何这样操做能够看下图所示

45 if "https://" not in imgUrl_src:

46 m = 'https://www.hqu.edu.cn/' + imgUrl_src

47 print('正在下载: %s' % m)

48 # 获取图片

49 ir = requests.get(m)

50 else:

51 ir = requests.get(imgUrl_src)

52 # 设置Path变量,为了使用Pahtlib库中的方法提取后缀名

53 p = Path(imgUrl_src)

54 # 获得后缀,返回的是如 '.jpg'

55 p_suffix = p.suffix

56 # 用write()方法写入本地文件中,存储的后缀名用原始的后缀名称

57 open(localPath + str(x) + p_suffix, 'wb').write(ir.content)

58 x = x + 1

59 except:

60 continue

61

62

63 if __name__ == '__main__':

64 # 指定爬取图片连接

65 url = 'https://www.hqu.edu.cn/index.htm'

66 # 指定存储图片路径

67 localPath = './img/'

68 # 获得网页源代码

69 page = getHtmlCode(url)

70 # 保存图片

71 getImg(page, localPath)

  注意我们之所以判断图片链接是否从“https://”开始,主要是因为我们需要一个完整的绝对路径来下载图片,而这个需要看网页原代码,选择一张图片,然后点击html所在的代码。 ,鼠标悬停,可以看到绝对路径,然后根据这个绝对路径设置要添加的缺失部分,如下图:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线