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

优采云 发布时间: 2021-09-17 19:09

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

)

  Python项目中的爬虫应用案例开发从入门到实战(清华大学出版社郑秋生、夏雅捷主编)-抓拍百度图片

  本文使用请求库对网站图片进行爬网。前几章中的博客介绍了如何使用urllib库抓取网页。本文主要利用请求库对网页内容进行抓取。使用方法基本相同,但请求方法相对简单

  不要忘记爬行动物的基本概念:

  1.指定要抓取的链接,然后抓取网站源代码

  2.提取您想要的内容。例如,如果要对图像信息进行爬网,可以选择使用正则表达式过滤或使用提取

  标记法

  3.cycle获取要爬网的内容列表并保存文件

  这里的代码与我的博客(photo crawler series一))前几章的区别在于:

  1.提取网页使用请求库

  2.保存图片时,后缀不是PNG或JPG,而是图片本身的后缀

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

  具体代码如下图所示:

  # 使用requests、bs4库下载华侨大学主页上的所有图片import osimport requestsfrom bs4 import BeautifulSoupimport shutilfrom pathlib import Path # 关于文件路径操作的库,这里主要为了得到图片后缀名# 该方法传入url,返回url的html的源代码def getHtmlCode(url): # 伪装请求的头部来隐藏自己 headers = { 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0' } # 获取网页 r = requests.get(url, headers=headers) # 指定网页解析的编码格式 r.encoding = 'UTF-8' # 获取url页面的源代码字符串文本 page = r.text return page# 该方法传入html的源代码,通过截取其中的img标签,将图片保存到本机def getImg(page, localPath): # 判断文件夹是否存在,存在则删除,最后都要重新新的文件夹 if os.path.exists(localPath): shutil.rmtree(localPath) os.mkdir(localPath) # 按照Html格式解析页面 soup = BeautifulSoup(page, 'html.parser') # 返回的是一个包含所有img标签的列表 imgList = soup.find_all('img') x = 0 # 循环url列表 for imgUrl in imgList: try: # 得到img标签中的src具体内容 imgUrl_src = imgUrl.get('src') # 排除 src='' 的情况 if imgUrl_src != '': print('正在下载第 %d : %s 张图片' % (x+1, imgUrl_src)) # 判断图片是否是从绝对路径https开始,具体为什么这样操作可以看下图所示 if "https://" not in imgUrl_src: m = 'https://www.hqu.edu.cn/' + imgUrl_src print('正在下载:%s' % m) # 获取图片 ir = requests.get(m) else: ir = requests.get(imgUrl_src) # 设置Path变量,为了使用Pahtlib库中的方法提取后缀名 p = Path(imgUrl_src) # 得到后缀,返回的是如 '.jpg' p_suffix = p.suffix # 用write()方法写入本地文件中,存储的后缀名用原始的后缀名称 open(localPath + str(x) + p_suffix, 'wb').write(ir.content) x = x + 1 except: continueif __name__ == '__main__': # 指定爬取图片链接 url = 'https://www.hqu.edu.cn/index.htm' # 指定存储图片路径 localPath = './img/' # 得到网页源代码 page = getHtmlCode(url) # 保存图片 getImg(page, localPath)

  请注意,为什么在开始时判断图片链接是否来自“HTTPS://”,主要是因为我们需要完整的绝对路径来下载图片,并且我们需要查看原创网页代码。选择图片,点击html所在的代码,按住鼠标查看绝对路径,然后根据绝对路径设置要添加的缺失部分,如下图所示:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线