python爬虫入门案例day05:Pexels

python爬虫入门案例day05:Pexels

目标网站

Pexels

目标网址

https://www.pexels.com/zh-cn/search/日落/

开发环境

1、window11

2、python3.7

3、PyCharm Community Edition 2021.2.1

4、双核浏览器

5、浏览器自带开发者工具

网站分析

复制代码
在下拉网页的过程中发现,会不断加载出新的图片,说明该网页为动态网页,那我们可以初步猜想图片的链接存放在通过Ajax请求的网络数据包中,抓包过程如图:

数据包url规律分析

bash 复制代码
1、https://www.pexels.com/zh-cn/api/v3/search/photos?page=10&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
2、https://www.pexels.com/zh-cn/api/v3/search/photos?page=11&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
3、https://www.pexels.com/zh-cn/api/v3/search/photos?page=12&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
4、https://www.pexels.com/zh-cn/api/v3/search/photos?page=13&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all
5、https://www.pexels.com/zh-cn/api/v3/search/photos?page=14&per_page=24&query=%E6%97%A5%E8%90%BD&orientation=all&size=all&color=all

经过对比发现,只有参数page在变化,且从1开始隔间为1开始递增,可以删除的参数color、size、orientation

请求头分析

先将请求头内容照如图所写,发现返回报错:{'error_messages': 'Bad API credentials.'}

原因是因为网站服务器对gei请求的参数进行了校验,但是请求头中没有找到密钥,于是修改请求头如下图:

响应数据结构分析


bash 复制代码
如上图一眼可以看出,响应数据格式为json数据格式,可以使用jsonpath对json数据进行解析,方便简单且快速

源代码

下载的图片

知识点总结

bash 复制代码
1、requests模块的get方法就是模拟浏览器发起get网络请求,得到服务器返回响应数据,headers中添加了user-agent用来将程序伪装成浏览器,user-agent是浏览器标识,一般服务器都会检查请求头中的user-agent字段的内容;
2、响应数据是字符串格式,但是看起来和json数据一样,使用json.loads()将str格式数据转换为json格式数据;
3、使用jsonpath.jsonpath()方法来对json格式数据进行解析提取出图片名称和图片链接;
4、为了降低爬虫程序对目标服务器造成的压力,要在程序中设置强制随机休眠time.sleep(random.randint(3, 5));
相关推荐
MoRanzhi120319 分钟前
第6篇(中)· 使用 PyQt5 实现 2048 高性能计算版:无头后台求解与三档运行模式
python·pyqt·数据持久化·多进程·进程间通讯·后台任务·断点续跑
Metaphor6922 小时前
Python 自动化办公:如何轻松在 PDF 中导入与导出表单数据
python·pdf·自动化
H.莓飛9 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu11410 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶11 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子11 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放11 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源12 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟12 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境12 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python