手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇-阿里云开发者社区

开发者社区> python进阶者> 正文

手把手教你爬取天堂网1920*1080大图片(批量下载)——实战篇

简介:
+关注继续查看

/1 前言/

上篇文章我们谈及了天堂网站图片抓取的理论,这篇文章将针对上篇文章的未尽事宜进行完善,完成图片的批量抓取。

/2 图片网址解析/

1. 我们首先来分析一下这个图片的地址在哪里。我们选择图片,然后右击网页检查,可以看到图片的路径,如下图所示。


2. 将其单独放出来,如下图所示。


3. 可以看到<a href>就是图片的链接,而src就图片的地址,所以我们可以找它的上一级标签<ul>。如果再找不到那就再找上一级以此类推(找到越详细内容更准确)。使用选择器xpath,获取到src的值(网址后缀)之后,将后缀加上“https前缀”就可以得到每一个网址,如下图所示:


4. 之后尝试运行,如下图所示,可以获取到具体的网址。


5. 我们再对这个网址进行请求(参考一个请求的方法)分析数据。


6. 我们以这个鱼的图片为例,点击它来到二级页面。


7. 右键检查 可以看到我们要获取的是src的地址,如下图所示。


8. 获取图片的源码,如下图所示。


9. Xpath 获取到路径,为了方便区分图片的名字,如下图所示。

/3 下载图片/

1. 为方便储存,新建一个filename来作为保存的路径,如下图所示。


2. 也就是说你需要在Python代码的同级目录,提前新建一个文件夹,名叫“天堂网爬的图片”,如果没有这个文件夹的话,将会报下图的错。


3. 使用with函数进行文件的打开和写入,下方代码的含义是创建一个文件,代码框里边有具体的注释。

"wb" # 意思是以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
"as f" # 意思是写入一个叫f的文件。
"f.wirite(html)" # 意思是说把html的内容写入f这个文件。



4. 下面是各个编码代表的含义,可以学习一下。
5. 基于以上代码,基本上就可实现批量下载。接下来,我们继续优化一下。我们导入一个叫fake_useragent的库 fake_useragent第三方库,来实现随机请求头的设置。

fromfake_useragent import UserAgent

ua =UserAgent()
print(ua.ie) #随机打印ie浏览器任意版本
print(ua.firefox)#随机打印firefox浏览器任意版本
print(ua.chrome) #随机打印chrome浏览器任意版本
print(ua.random) #随机打印任意厂家的浏览器

6. 我们可以再初始化init方法,添加ua.random,让它随机的产生;其中UserAgent代码如图:(这里设置随机产生50个挑选其中一个进行请求)


7. 最终实现的效果图,终端显示如下图所示。
8. 将图片自动下载到本地后的效果图,高清的噢~
 9. 至此,针对解析出来的图片地址予以批量下载的任务已经完成,接下来自己可以开心的去浏览图片啦。

10. 不建议大家爬取太多数据,这样会给服务器增大负载,浅尝辄止即可。

/4 小结/

本文基于理论篇,通过Python 中的爬虫库 requests 、lxml、fake_useragent,带大家进行网页结构的分析以及网页图片地址数据的提取,并且针对解析出来的图片地址予以批量下载,方法行之有效,欢迎大家积极尝试。

如果需要本文源码的话,请在公众号后台回复“高清图片”四个字进行获取,觉得不错,记得给个star噢。

------------------- End -------------------

往期精彩文章推荐:

手把手用Python教你如何发现隐藏wifi
手把手教你用Python做个可视化的“剪刀石头布”小游戏
手把手教你使用Python批量创建复工证明

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DenseNet实战:tensorflow2.X版本,DenseNet121图像分类任务(小数据集)
本例提取了猫狗大战数据集中的部分数据做数据集,演示tensorflow2.0以上的版本如何使用Keras实现图像分类,分类的模型使用DenseNet121。
8 0
DenseNet实战:tensorflow2.X版本,DenseNet121图像分类任务(大数据集)
本例提取了猫狗大战数据集中的部分数据做数据集,演示tensorflow2.0以上的版本如何使用Keras实现图像分类,分类的模型使用DenseNet121。本文实现的算法有一下几个特点: 1、自定义了图片加载方式,更加灵活高效,节省内存 2、加载模型的预训练权重,训练时间更短。 3、数据增强选用albumentations。
5 0
如何科学的使用无影云电脑
我当时整个人都高兴的跳起来了,由于坐下的时候太着急,一屁股坐在了地上,导致我之后的一段时间都只能半只屁股坐在椅子上,带薪摸鱼的难度得到大幅度提升。 作为一名网络安全领域的博主,经常用Python做一些奇怪的操作,比如爬CSDN的热榜信息,爬b站舞蹈区的小姐姐,一边爬一边感慨中国文化的博大精深
20 0
xy哥怒肝,前端学习路线一条龙【内含入门到进阶到高级精选资源】无套路获取!!!
xy哥怒肝,前端学习路线一条龙【内含入门到进阶到高级精选资源】无套路获取!!!
12 0
你真的了解CSS3硬件加速吗?
你真的了解CSS3硬件加速吗?
24 0
HTML中的<meta/>标签还能这么玩???【居然能搞动画】
HTML中的<meta/>标签还能这么玩???【居然能搞动画】
5 0
MQTT知识大全【科普贴】
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于客户端与服务器之间发布/订阅(publish/subscribe)模式的"轻量级"通讯协议。为了保证通讯的安全性和可靠性,该协议基于TCP/IP协议构建。由IBM在1999年发布,最初被用于石油管道传感器与卫星的通讯连接,2014年,它正式成为一个OASIS开放标准并得到了大量开源语言的支持。
9 0
【前端搞地图】教你如何绘制一张填色专题地图
【前端搞地图】教你如何绘制一张填色专题地图
7 0
+关注
python进阶者
专注于分享Python网络爬虫、数据挖掘、数据分析、数据处理、数据可视化、大数据、人工智能、云计算、机器学习等工具资源、热点资讯、相关技术文章、学习视频和学习资料等~~~ 该社区将不定期分享各种技术干货、学习资料等。关注我们,您收获的不只是知识,还有经验与人脉!
182
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载