Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸
时间:2021-09-03
本文章向大家介绍Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸,主要包括Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
先图片开路
- python 3.6 / 3.8
- pycharm 编辑器
- requests
- parsel
- os 文件操作
在cmd里面就可以进行安装 pip install requests
网址: 彼岸壁纸
网站数据: 壁纸图片
通过浏览器上面 开发者工具(F12/鼠标右键点击检查选择network)进行抓包分析
I. 需要所有图片的 ID
II. 获取图片ID之后, 才请求图片详情页url地址
III. 获取图片地址 以及 图片标题
【付费VIP完整版】只要看了就能学会的教程,80集Python基础入门视频教学
- 发送请求 对于图片列表页发送请求
- 获取数据 获取网页源代码
- 解析数据 提取图片ID
- 发送请求 把获取到的图片ID 出入图片详情页url中
- 解析数据 提取图片地址 以及 图片标题
- 保存数据
- 多页爬取
url = f'http://www.netbian.com/meinv/index_{page}.htm' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' } response = requests.get(url=url, headers=headers)
<Response [200]> <> python里面表示的是对象 返回的是response对象(响应体对象)
200 状态码 表示请求成功
# 它给返回的数据 出现了乱码 >>> 转码 response.encoding = response.apparent_encoding # 自动识别编码 print(response.text) # html字符串数据
re正则正则表达式 可以对于字符串数据内容直接提取
css选择器 xpath 都是根据标签属性内容提取数据
img_ids = re.findall('<li><a href="/desk/(\d+).htm" title', response.text) # 正则表达式匹配出来的数据内容 返回的是列表 列表里面每一个元素都是图片id for img_id in img_ids: # 构建壁纸详情页的url地址 # 字符串格式化方法 format() link_url = f'http://www.netbian.com/desk/{img_id}-1920x1080.htm' print(link_url)
response_1 = requests.get(url=link_url, headers=headers)
selector = parsel.Selector(response_1.text)
img_url = selector.css('#endimg img::attr(src)').get() title = selector.css('#endimg img::attr(title)').get() print(response_1.text)
img_content = requests.get(url=img_url, headers=headers).content with open('img\\' + title + '.jpg', mode='wb') as f: f.write(img_content) print(title, img_url)
for page in range(2, 11): print(f'正在爬取第{page}页的数据内容')
原文地址:https://www.cnblogs.com/qshhl/p/15225081.html
- Golang学习--GroupCache的使用
- 基于 Webpack & Vue & Vue-Router 的 SPA 初体验
- GO语言高并发学习心得体会例
- Go 语言实现的网络连接池:Pool
- go语言操作redis连接池的方法
- WebVR如此近 - three.js的WebVR示例程序解析
- 【Dev Club分享】基于RxJava的一种MVP实现
- Android 动态链接库加载原理及 HotFix 方案介绍
- 如果裸写一个goroutine pool
- 【Dev Club 分享】微信 iOS SQLite 源码优化实践
- 移动客户端中高效使用 SQLite
- 【Dev Club 分享】微信热补丁 Tinker 的实践演进之路
- Android 进程保活招式大全
- 【Dev Club 分享】H5 视频直播那些事
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- pytest封神之路第二步 132个命令行参数用法
- Jumpserver2.2部署文档
- Golang多线程简单斗地主
- Tomcat性能监控与调优
- Vue+SpringBoot项目实战(一) 搭建环境
- kubernetes(十九) Ceph存储入门
- Java并发编程(8)- 应用限流及其常见算法
- 字符集其实很简单
- kubernetes(二十)SpringCloud微服务容器化迁移
- HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!
- kubernetes(七) 二进制部署k8s(1.18.4版本)
- Java并发编程(7)- 线程调度 - 线程池
- Java并发编程(6)- J.U.C组件拓展
- Java并发编程(5)- J.U.C之AQS及其相关组件详解
- Python+selenium 自动化-启用带插件的chrome浏览器,调用浏览器带插件,浏览器加载配置信息。