当前位置: 首页 > news >正文

python爬虫入门案例day05:Pexels

python爬虫入门案例day05:Pexels

目标网站

Pexels

目标网址

https://www.pexels.com/zh-cn/search/%E6%97%A5%E8%90%BD/

开发环境

1、window11
2、python3.7
3、PyCharm Community Edition 2021.2.1
4、双核浏览器
5、浏览器自带开发者工具

网站分析

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

在这里插入图片描述

数据包url规律分析

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请求的参数进行了校验,但是请求头中没有找到密钥,于是修改请求头如下图:
在这里插入图片描述

响应数据结构分析

在这里插入图片描述
在这里插入图片描述

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

源代码请添加图片描述

下载的图片

在这里插入图片描述

知识点总结

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))
http://www.dtcms.com/a/613233.html

相关文章:

  • android studio Gradle 打包任务配置
  • 【AI学习-comfyUI学习-1批量抠图换背景工作流+2视频抠图工作流-各个部分学习-第十节】
  • Redis(124)Redis在电商系统中的应用有哪些?
  • [Dify 实战案例] 用 Dify 做一个多语种文档翻译工具:支持 TXT / DOCX / XLSX / PPTX 全格式
  • 自然语言编程:从一段Perl程序说起
  • OpenAI Whisper:技术、实战、生态
  • 【ZeroRange WebRTC】DTLS(Datagram Transport Layer Security)技术深度分析
  • 南京本地网站合肥建网站要多少钱
  • 从丝印判断ESP32-WROOM-32E模组Flash容量
  • react 学习
  • 语言模型(Language Model)介绍
  • 基于协同过滤推荐算法的求职招聘推荐系统u1ydn3f4(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
  • 在 Ubuntu 中把系统字符集从英文改成支持中文
  • PyTorch实战:从零搭建CV模型
  • 网站权重不够高 导致友情链接批量查询
  • 如何在校园网让虚拟机联网并固定IP
  • 5. Qt深入 线程例子
  • 虚拟服务器和如何创建网站网站 注册模块怎么做
  • 【Linux日新月异(二)】CentOS 7用户与用户组管理深度指南:保障系统安全的基石
  • 大模型-提示工程
  • ARM编译器深度解析:从Keil到VSCode的STM32开发之
  • 支持CAS身份认证,支持接入Oracle11数据源,SQLBot开源智能问数系统v1.3.0版本发布
  • oracle官网在线免费测试环境 oracle live
  • 网站风格设计描述怎么样可以做网站充值代理
  • MySql的慢查询(慢日志)
  • 建设京东商城网站导航网站教程
  • 【MySQL】深度解析 Redo Log 与灾后恢复
  • 网站都需要续费吗绍兴以往网站招工做
  • 做百度网站接到多少客户电话seo蜘蛛屯
  • 山东省住房城乡建设厅查询网站wordpress 执行顺序