失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > [Python][爬虫03]requests+BeautifulSoup实例:抓取图片并保存

[Python][爬虫03]requests+BeautifulSoup实例:抓取图片并保存

时间:2022-08-10 04:17:05

相关推荐

[Python][爬虫03]requests+BeautifulSoup实例:抓取图片并保存

上一篇中,安装和初步使用了requests+BeautifulSoup,感受到了它们的便捷。但之前我们抓取的都是文字信息,这次我们准备来抓取的是图片信息。

>第一个实例

我们来抓取这个网站的图片:/bizhi/stand_by_me_doraemon_v45983/

首先,审查网页元素:

因此其结构就为:

<div class='il_img'> x 若干个,对每个div有 :<img src='我们要的img src数据'>

整体思路是:

获取每个图片的src地址;构建requests去请求img的src并获取图片;写入文件

代码如下:

import requestsfrom bs4 import BeautifulSouppic_id = 0 # 图片编号url = '/bizhi/stand_by_me_doraemon_v45983/'bs = BeautifulSoup(requests.get(url).content, "lxml") # 调用lxml作为解析引擎 需要:pip install lxmlfor i in bs.select('.il_img'):pic_url = i.find('img')['src']pic_file = open('./pic_'+str(pic_id)+'.jpg', 'wb') # 二进制创建并写入文件pic_file.write(requests.get(pic_url).content) # 写出请求得到的img资源pic_id += 1

这样,就能在爬虫脚本目录下找到我们需要的图片了:

>第二个实例

这次我们来抓取这个网站的资源,要的是奖章图标+奖章等级+等级标志颜色+称号,并按照'等级+标志颜色+称号.gif'的方式存储:

结构为:

<table><td><img> img-src<td> 等级<td> 颜色<td> 称号

同样,也就可以给出相关的代码了:

import reimport requestsfrom bs4 import BeautifulSoupurl = '/gonglue/236751_all.html'bs = BeautifulSoup(requests.get(url).content, "lxml")for table in bs.find_all('table', attrs={'border': 1, 'align': 'center'}): # 获取所有的数据表for td in table.find_all(td_with_img): # 获取含有img标签的td标签img_src = td.img['src'] # 获取图片urllevel = td.find_next_sibling('td') # 等级td节点color = level.find_next_sibling('td') # 颜色td节点title = color.find_next_sibling('td') # 称号td节点opf = open(get_title(level.string, color.string, title.string), 'wb')opf.write(requests.get(img_src).content)print '已抓取:', re.sub('\s', '', level.string)

这里用了两个方法:

def td_with_img(node):return node.name == 'td' and node.img is not None # 含有img标签的td标签 def get_title(level, color, title):return './ppt/'+re.sub('\s', '', level)+re.sub('\s', '', color)+re.sub('\s', '', title)+'.gif' # 移除空白并直接得到文件名

我们的成果:

如果觉得《[Python][爬虫03]requests+BeautifulSoup实例:抓取图片并保存》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。