手把手教你爬取天堂网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批量创建复工证明

相关文章
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
350 0
|
2月前
|
人工智能 Java 程序员
搭建AI智能体的Java神器:Google ADK深度解析
想用Java构建复杂的AI智能体?Google开源的ADK工具包来了!代码优先、模块化设计,让你像搭积木一样轻松组合智能体。从单体到多智能体系统,从简单工具到复杂编排,这篇文章带你玩转Java AI开发的全新境界。
|
Ubuntu JavaScript 关系型数据库
我与PostmarketOS相遇
PostmarketOS 系统 手机改造
1716 0
我与PostmarketOS相遇
|
Java Shell 程序员
解决:bash: syntax error near unexpected token `(‘ ...【亲测有效】
解决:bash: syntax error near unexpected token `(‘ ...【亲测有效】
9659 0
|
5月前
|
存储 监控 安全
无需云服务器、无需公网IP,轻松实现门禁系统远程接入与数据同步
智慧园区门禁管理中,贝锐花生壳提供高效解决方案。通过内网穿透技术,无需公网IP即可集中管理多区域门禁系统,保障数据安全传输。采用RSA与AES混合加密,支持权限精细化控制及多维度监控,简单三步实现远程访问,助力园区智慧安全管理升级。
188 7
|
10月前
|
Web App开发 SQL 前端开发
前端页面加载性能指标之LCP
本文介绍了 Largest Contentful Paint (LCP),一种衡量网页加载性能的指标,专注于视口内最大图片或文本块的完全渲染时间,旨在提升用户对主要内容加载速度的感知。文章还探讨了LCP的测量方法和优化策略,如图像优化、懒加载等,以帮助改善网页性能。
841 5
|
12月前
|
C++
VS代码对齐工具使用教程
本文是关于VS代码对齐工具的使用教程,包括工具下载、使用文档、使用实例和对齐结果展示。文章介绍了如何使用该工具进行字符串对齐,提供了快捷键操作和正则表达式对齐方法,并展示了对齐前后的代码对比。
514 0
VS代码对齐工具使用教程
|
机器学习/深度学习 并行计算 PyTorch
安装PyTorch详细步骤
安装PyTorch时,选择CPU或GPU版本。有Nvidia显卡需装CUDA和cuDNN,可从NVIDIA官网下载CUDA 11.8和对应版本cuDNN。无Nvidia显卡则安装CPU版。安装PyTorch通过conda或pip,GPU版指定`cu118`或`rocm5.4.2`镜像源。验证安装成功使用`torch._version_`和`torch.cuda.is_available()`。
|
缓存 关系型数据库 MySQL
【缓存大对决】Memcached VS MySQL查询缓存,谁才是真正的性能之王?
【8月更文挑战第24天】在现代Web应用中,缓存技术对于提升性能与响应速度至关重要。本文对比分析了Memcached与MySQL查询缓存这两种常用方案。Memcached是一款高性能分布式内存对象缓存系统,支持跨服务器共享缓存,具备灵活性与容错性,但受限于内存大小且不支持数据持久化。MySQL查询缓存内置在MySQL服务器中,简化了缓存管理,特别适用于重复查询,但功能较为单一且扩展性有限。两者各有所长,实际应用中可根据需求单独或结合使用,实现最佳性能优化。
396 0
|
关系型数据库 MySQL 数据库
SQLite和MySQL指南
【5月更文挑战第18天】了解如何使用Python连接SQLite和MySQL数据库。首先,安装必要的库,如`sqlite3`(Python自带)和`mysql-connector-python`。接着,连接SQLite数据库,创建表、插入和查询数据。对于MySQL,同样建立连接,但需提供额外的连接信息。使用参数化查询防止SQL注入,并处理异常以增强程序稳定性。可选ORM框架如SQLAlchemy简化操作。考虑使用内存数据库、连接池、异步库(如`aiosqlite`)以优化性能。使用环境变量或配置文件安全管理连接信息,并实施安全性措施保护数据库。通过本文,提升Python数据库编程技能。