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

SpiderDemo第一关

1.开f12失败

但是关闭f12请求成功

2.我们使用抓包工具来对比两次请求包,看看f12的请求包有什么不一样

然后测试这个失败的包,

发现删除

Pragma: no-cache
Cache-Control: no-cache

这两个字段后就可以正常获取数据了

那么为什么开了f12会有这两个字段,原来是因为选择了这两个

2.抓取包

现在关闭了这两个字段之后,f12就可以正常抓取包了

技巧一:

因为在爬虫中,获得的数据更多是动态数据,所以我们在筛选包的时候,可以只选择Fetch/XHR:

然后我们复制bash,生成爬虫代码,具体可看博主写的《人民的爬虫》

技巧二:

但是是失败的,这里我们有一个看结果的技巧,我们发现结果是unicode编码,而且是json格式,我们就可以看到编码后的汉字了

原理:

1. response.text - 原始文本
返回服务器响应的原始字符串内容
如果服务器返回的是 Unicode 转义序列(如 \u68c0\u6d4b),它会原样显示
这是 JSON 格式的字符串表示,还没有被解析
2. response.json() - 解析后的 Python 对象
使用 json 模块解析响应内容
自动将 Unicode 转义序列(\uXXXX)解码为对应的中文字符
返回 Python 字典/列表等数据结构

扩展:response.text 和 response.json () 区别 & 使用场景

一、对比表格

方式返回类型原理适用场景优缺点
response.text字符串str把响应原始报文按编码解码成普通文本1. 返回 HTML 网页2. 返回纯文本 / 普通字符串3. 不确定返回格式,只想看原始内容4. 接口不是标准 JSON通用不报错,不能直接点键取值,要自己字符串处理
response.json()Python 字典dict/ 列表list自动把响应文本loads 反序列化成 JSON 对象1. 接口明确返回标准 JSON2. 需要读取里面字段:success/error/data直接取值方便;非 JSON 会直接抛解析异常

二、一句话总结

只要接口返回标准 JSON、需要拿里面字段,就用response.json();返回网页 HTML、纯文本,或者不确定格式怕报错,就用response.text

3.让代码成功运行

为什么浏览器可以正常运行,但是之前管用的爬虫现在也报错了

原因:因为这样子的cookie的传递和浏览器有区别

解决方法1:

添加,并在调用时候调用session

session = requests.Session() session.headers.clear() # 清空默认头

解决方法2:

修改requests库:

from curl_cffi import requests

其他都不修改,即可成功

4.循环获取100个数字

from curl_cffi import requests cookies = { 'sessionid': 'axqdb7vbszzwf2o6eb1x1a6d1l01qen2', } headers = { 'accept': 'application/json, text/javascript, */*; q=0.01', 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 'priority': 'u=1, i', 'referer': 'https://spiderdemo.cn/sec1/header_check/', 'sec-ch-ua': '"Chromium";v="146", "Not-A.Brand";v="24", "Microsoft Edge";v="146"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0', 'x-requested-with': 'XMLHttpRequest', # 'cookie': 'sessionid=axqdb7vbszzwf2o6eb1x1a6d1l01qen2', } params = { 'challenge_type': 'header_check', } all_page_data = [] for page_num in range(1, 101): url = f'https://spiderdemo.cn/sec1/api/challenge/page/{page_num}/' response = requests.get(url, params=params, cookies=cookies, headers=headers) response_data = response.json() page_data = response_data.get('page_data', []) all_page_data.extend(page_data) print(f"第 {page_num} 页: 提取到 {len(page_data)} 条数据") print(f"\n总共提取到 {len(all_page_data)} 条数据") print("\n所有提取的数据:") a=0 for i, data in enumerate(all_page_data, 1): print(f"{i}. {data}") a=a+data print(a)
http://www.jsqmd.com/news/786374/

相关文章:

  • AArch64虚拟内存系统地址转换与参数配置详解
  • ViGEmBus驱动实战指南:从内核级模拟到性能调优的完整解决方案
  • Taotoken的用量看板让我们的月度AI支出变得清晰可预测
  • Hitboxer:如何用开源工具解决游戏按键冲突的终极方案
  • 三份假文档如何轻取AI知识库?RAG系统漏洞大揭秘!
  • STM32F103 学习笔记-21-串口通信(第5节)—串口2345代码移植和讲解
  • CANN/ops-rand API 实现状态
  • React聊天机器人组件集成指南:从UI定制到AI后端连接
  • 从特征工程到深度学习:AI视网膜疾病诊断的技术演进与工程实践
  • 脑机接口与LLM融合:EEGChat项目实现脑电信号到文本的意图解码
  • 【C++】stackqueuedequepriority_queue深度剖析
  • Codex Mac 安装报错解决教程(应用程序“Codex“无法打开)
  • 第一行代码--初步学习--UI开发--ListView
  • 自动化立体仓库系统项目施工要点
  • Win系统实现网络转发与端口映射:从 IPEnableRouter 到 RRAS 完整步骤
  • 如何快速掌握Blender插件io_scene_psk_psa:虚幻引擎PSK/PSA格式完整指南
  • 数据泄露已成网络安全新热点!成因、危害、溯源防御全方位深度解析
  • 从黑盒模型到因果反事实解释:构建可解释AI的实践路径
  • AI定价算法中的市场分配与合谋机制解析
  • Vatee外汇合规资质值得信赖吗?监管框架完善吗?
  • 基于大语言模型的互动游戏:提示词工程与AI游戏引擎设计
  • CANN/catlass GEMM恒等块调度
  • 2026年Q2北京铝镁锰板实力厂家盘点:廊坊铝硕金属制品有限公司深度解析 - 2026年企业推荐榜
  • JavaScript while 循环详解
  • Chainlit:快速构建AI应用界面的Python框架,无缝集成LangChain与OpenAI
  • 基于粒子群优化算法的微电网调度(光伏、储能、电动车、电网交互)(Matlab代码实现)
  • 线上推广公司怎么选?2026五家主流服务商全景评测与商家决策手册 - GEO优化
  • 2026 国内大模型 API 中转选型笔记:从接入成本到长期维护的几个观察
  • Bean 什么时候会被销毁?
  • 如何创建一个 Springboot Starter