python爬取图片_python爬取萌萌柴犬图片

前面刚学过正则表达式,那我们趁热打铁实战一下。今天,数据媛为大家带来python利用request库和re库爬取柴犬表情包的爬虫实战。 目录如下:

python爬取图片_python爬取萌萌柴犬图片_第1张图片

什么是爬虫

爬虫是什么

网络爬虫,又叫网页蜘蛛和网络机器人。就是模拟浏览器去访问和获取互联网上信息的一个程序。 实质上也是一种检索信息的方式。

爬虫的应用

有一种说法说,网络流量中, 50%的流量都是爬虫创造的 。所以,爬虫的应用,远比我们想象中更广泛更多。 爬虫可以帮助我们快速、规模化地获得网络上的数据,而且,实际上一些开源信息的网页并不反对爬虫来获取信息。 但是,既然叫做 ,那说明互联网世界也并不欢迎它,我们制作爬虫除了遵守 robots.txt 的君子协定,我们还需要尽量少用爬虫,不商用爬虫等行业潜规则,慎用技术。

爬虫的分类

通用网络爬虫

百度、谷歌、雅虎等搜索引擎 特点:关键字获取既定的目标,覆盖率很大

聚焦网络爬虫

爬取有更新到的内容 特点:到互联网上有选择去抓取特定的目标和相关的主题内容

增量式网络爬虫

特点:只采取增量式个更新或者是只爬取新产生的或者是已经发生变化的网页

深层网络爬虫

表层:一般看到的内容 深层:大部分内容是不可以通过静态链接获取的,隐藏在搜索表单之后ode一些数据,可能需要用户提交一些关键词可以获得的web页面。

爬取表情包

分析目标数据

网页地址

打开网址 https://qq.yh31.com/zjbq/1094990.html ,这是柴犬的表情包专题,我们将计划用Python一键爬取这些柴犬表情包,丰富我们的推文。 python爬取图片_python爬取萌萌柴犬图片_第2张图片

图片链接地址

快速查到图片的代码位置
复制其中一个图片的地址,在源代码中 ctrl+f 定位到图片的位置 python爬取图片_python爬取萌萌柴犬图片_第3张图片 图片和视频的爬取和文本的有些不一样,我们想要下载图片或视频,就需要首先知道图片或视频的链接,然后通过图片的链接获取图片二进制代码,然后将二进制代码下载到本地,这样一般的图片和视频就到了本地了。

确定爬虫思路

  1. requestget()网页源代码

  2. re库的findall()获取图片链接

  3. 通过图片链接get()二进制代码

编写代码

获取网页源代码

这个表情包网站看起来比较一般,应该容易爬到,不会反爬吧。而且我的数据量这么小。所以我就直接使用 requestget ,没有伪造 headers
response = requests.get('https://qq.yh31.com/zjbq/1094990.html')
但是,我太天真了,后来爬到的图片里,除了前三张表情包正常外,其余全是这样的图片。 python爬取图片_python爬取萌萌柴犬图片_第4张图片 害,还是有反爬机制的 所以,慢慢找反爬方式,首先需要获取浏览器的请求头。 F12 +点击 Network 刷新页面,抓包其中一个图片的链接,然后得到浏览器请求头。将其添加到 get() 中。 python爬取图片_python爬取萌萌柴犬图片_第5张图片
def get_url(header):    response = requests.get('https://qq.yh31.com/zjbq/1094990.html',headers=header)

解析图片地址

今天使用的是正则表达式来获取链接地址,当然也可以使用 xpathbeautifulsoup 都可以解析。
    pattern = r''# .*?意思是提取尽可能少的许多内容    pic_re_url = re.findall(pattern, response.text)
如果有小伙伴不理解正则表达式,可以回看【文科生快速入门python(十) | 正则表达式详细解读】,跟着敲一遍很快学会 re 库。 python爬取图片_python爬取萌萌柴犬图片_第6张图片

获取二进制图片代码

将上面所获得的图片链接,一个一个爬取。 注意这里二者的区别
  • response.text  意为获取网页源代码

  • response.content  意为获取二进制代码

def get_pic(header,one_url,name):    response = requests.get(one_url,headers=header)    response.content

写入文件夹中

这里使用 with 语句来读写文件,要给每个图片命名,所以使用了前面数据媛讲过的%的妙用。
with open(r'D:\0code\HSS_data\20200508-emoji_spider\emoji\%d.gif'%name,'wb') as f:    f.write(response.content)

编写函数

然后,就是将以上步骤封装为函数,以便清晰地调用啦! 最后得到一个个萌萌的柴犬! python爬取图片_python爬取萌萌柴犬图片_第7张图片

小结:

  1. requestget()网页源代码

  2. re库的findall()获取图片链接

  3. 通过图片链接get()二进制代码

  4. for循环遍历url列表进行逐个爬取

  5. with语句和%d生成文件名

若需本文.py完整代码,请在在本公众号后台回复关键词 emoji 往期精品: 文科生快速入门python(十) | 正则表达式详细解读 python的scrapy框架爬虫基础 浏览器插件Web Scraper 爬取网页数据,秒杀八爪鱼 python占位符 %s 的灵魂质问 参考资料: CSDN博主「MHyourh」 https://blog.csdn.net/sinat_38682860/article/details/89255020 文字编辑:数据媛 Victoria  数据猿Riggle python爬取图片_python爬取萌萌柴犬图片_第8张图片

你可能感兴趣的:(python爬取图片,python爬取图片并保存,python爬取百度图片,python爬图片,代码里无图片地址)