python爬虫入门案例day05:Pexels

作者:自学互联网日期:2025/11/16

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、浏览器自带开发者工具

网站分析

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

在这里插入图片描述

数据包url规律分析

11、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
22、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
33、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
44、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
55、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
6

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

请求头分析

先将请求头内容照如图所写,发现返回报错:{‘error_messages’: [‘Bad API credentials.’]}
在这里插入图片描述
原因是因为网站服务器对gei请求的参数进行了校验,但是请求头中没有找到密钥,于是修改请求头如下图:
在这里插入图片描述

响应数据结构分析

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

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

源代码请添加图片描述

下载的图片

在这里插入图片描述

知识点总结

11、requests模块的get方法就是模拟浏览器发起get网络请求,得到服务器返回响应数据,headers中添加了user-agent用来将程序伪装成浏览器,user-agent是浏览器标识,一般服务器都会检查请求头中的user-agent字段的内容;
22、响应数据是字符串格式,但是看起来和json数据一样,使用json.loads()将str格式数据转换为json格式数据;
33、使用jsonpath.jsonpath()方法来对json格式数据进行解析提取出图片名称和图片链接;
44、为了降低爬虫程序对目标服务器造成的压力,要在程序中设置强制随机休眠time.sleep(random.randint(3, 5))5

python爬虫入门案例day05:Pexels》 是转载文章,点击查看原文


相关推荐


Python 的内置函数 map
IMPYLH2025/11/15

Python 内建函数列表 > Python 的内置函数 map Python 的内置函数 map() 是一个高阶函数,它允许对一个可迭代对象(如列表、元组等)的所有元素应用指定的函数,并返回一个 map 对象(可迭代对象)。其基本语法是: map(function, iterable, ...) 主要特点: 惰性计算(Lazy Evaluation):map 对象不会立即执行计算,只有在需要时才会真正处理数据多参数支持:可以同时处理多个可迭代对象函数式编程特性:配合 lambda 表


2.登录页测试用例
Sunlightʊə2025/11/14

用例ID测试标题测试类型测试场景测试步骤预期结果实际结果其他要素Login-001核心登录功能测试功能测试正常登录流程1.输入正确的用户名 2.输入正确的密码 3.点击登录按钮登录成功,跳转至主页面符合预期 Login-002用户名为空1.用户名为空 2.输入任意密码 3.点击登录按钮提示“请输入用户名”,用户名输入框变红符合预期 Login-003密码为空1.输入正确用户名 2.密码为空 3.点击登录按钮提示“请输入密码”,密码输入框变红符合预期 Login


Webpack Loader 和 Plugin 实现原理详解
阿珊和她的猫2025/11/12

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》 文章目录 一、Webpack Loader 实现原理(一)Loader 的概念(二)Loader 的生命周期(三)Loade


📘 全面解析:JavaScript 时间格式化 API 实战指南
excel2025/11/11

——从 toUTCString() 到 Intl.DateTimeFormat 的深度理解 时间与日期,是前端开发中最容易“踩坑”的部分。不同浏览器、不同区域、甚至不同系统语言,都会造成输出不一致。 本文将系统解析 JavaScript 提供的时间格式化方法,帮你彻底搞懂它们的差异、用途与正确使用方式。 一、背景:为什么会有这么多时间格式化方法? JavaScript 的时间系统基于 ECMAScript 时间标准,时间点以 UTC 为基准(Unix Epoch:1970-01-01 00:0


JUC篇——核心、进程、线程
不穿格子的程序员2025/11/9

一、三者的层次关系 核心:cpu的大脑 进程: 程序的运行状态 线程:对共享变量进行操作的变量 二、线程的六种状态 三、创建线程的四种方式(咖啡店比喻理解) 具体参考:https://blog.csdn.net/m0_59624833/article/details/151891492?spm=1001.2014.3001.5501 继承Thread类(老板亲自做咖啡)实现Runnable接口(雇佣服务员做咖啡)实现Callable接口结合FutureTask,适用于执行有


RabbitMQ 实战:理解“不公平分发(Unfair Dispatching)”机制
sg_knight2025/11/6

一、前言        在使用 RabbitMQ 构建消息队列系统时,很多人都知道它有“轮询分发(Round-Robin Dispatching)”机制。 也就是说: 如果有多个消费者同时订阅同一个队列,RabbitMQ 会尽量让每个消费者轮流接收相同数量的消息。 听起来很“公平”,但实际运行中你可能会发现—— 有的消费者几乎“忙不过来”,而另一些消费者却“闲得发慌”。 这,就是所谓的 不公平分发(Unfair Dispatching) 现象。 二、为什么会出现“不公平分发”? Rabbi


Redis(99)Redis的高可用性如何实现?
Victor3562025/11/2

实现Redis的高可用性是确保系统在硬件故障、网络中断或其他问题发生时依然能够正常运行的重要手段。Redis提供了多种机制来实现高可用性,包括主从复制、哨兵模式和Redis集群。以下是详细的实现步骤和代码示例。 1. 主从复制 主从复制(Master-Slave Replication)是Redis实现高可用性的基础。通过配置多个从节点(Slave),可以在主节点(Master)出问题时继续提供读操作。 配置主从复制 假设有两台机器:主节点 192.168.1.100 和从节点 192.168.


Redis Sentinel哨兵集群
新手小白*2025/10/30

一、Redis主从复制中的问题 Redis主从复制集群可以将主节点的数据改变同步给从节点,这样从节点就可以起到两个作用:第一:作为主节点的一个备份,一旦主节点出了故障不能继续对外提供服务时,从节点可以作为后备"顶"上来,并且保证数据尽量不丢失。第二,从节点可以扩展主节点的读能力,通过实现读写分离结构,可以大大减轻主节点在进行高并发读写操作时的访问压力。 但是主从同步也带了一些问题: 一旦主节点故障,需要手动将一个从节点晋升为主节点,slaveof no one。 需要修改客户端或


Python 的内置函数 enumerate
IMPYLH2025/10/27

Python 内建函数列表 > Python 的内置函数 enumerate Python 的内置函数 enumerate 是一个非常有用的工具函数,主要用于在遍历序列(如列表、元组或字符串)时,同时获取元素的索引和值。 基本语法如下: enumerate(iterable, start=0) 其中: iterable 表示任何可迭代对象start 是可选参数,指定索引的起始值,默认为 0 使用示例: fruits = ['apple', 'banana', 'orange'] f


系统与网络安全------弹性交换网络(5)
virelin_Y.lin2025/10/25

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 VLAN间通信 VLANIF VLANIF虚接口 三层交换机 具备路由功能的交换机,称之为三层交换机或多层交换机 VLAN间通信解决方案 VLANIF虚接口 VLANIF虚接口 每个VLAN都对应一个VLANIF接口 VLANIF接口是一种三层虚拟接口,可以实现VLAN间的三层互通 给每个VLAN需要配置一个VLAN虚接口,配置接口IP地址,作为VLAN内主机的网关地址 VLANIF接口不占用额外的物理端口资

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0