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

Python爬虫02_Requests实战网页采集器

一、Request请求伪装解析
#UA:User-Agent(请求载体身份标识)
#UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份呢标识为某一款浏览器,说明该请求是一个正常的请求,
#但是如果检测到请求的载体身份标识不是基于某一款浏览器的,则表示为不正常的请求(爬虫),则服务器端就很有可能拒绝该请求。
#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

import requests
#执行UA伪装,写入UA信息,封装到字典中
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0'
}
url = 'https://www.sogou.com/web'
#处理url携带的参数:封装到字典中
kw = input('enter a word:')
param = {'query':kw
}
#对指定的url发起的请求对应的url添加携带的参数信息,并且于请求过程中处理了参数,
response = requests.get(url=url,params=param,headers=headers)
page_text = response.text
fileName = kw+'.html'
with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)
print(fileName,'保存成功!!!')

二、HTTP请求报文解析
HTTP 请求报文(Request Message)是客户端发给服务器的数据包,通常由 起始行(Start Line)、请求头(Headers) 和 可选的消息体(Body) 三部分组成。
1. 起始行(Start Line)
分为三部分,用空格分隔:
GET /index.html HTTP/1.1
方法(Method):如 GET、POST、PUT、DELETE 等,表示操作类型。
路径(Path):请求的资源路径(如 /index.html),可包含查询参数(如 /api?key=123)。
协议版本(HTTP Version):如 HTTP/1.1 或 HTTP/2。
2. 请求头(Headers)
键值对形式(Key: Value),每行一个,常见字段:

字段名示例值作用说明
Hostwww.example.com目标主机域名(HTTP/1.1 必须字段)
User-AgentMozilla/5.0 (Windows NT 10.0)客户端软件标识
Accepttext/html,application/xhtml+xml客户端能处理的媒体类型
Accept-Encodinggzip, deflate支持的压缩算法
Content-Typeapplication/jsonBody 的数据类型(POST/PUT 必填)
Content-Length348Body 的字节长度
AuthorizationBearer token123身份验证凭证
Cookiesessionid=abc123携带的 Cookie 数据
Cache-Controlno-cache缓存控制策略

3. 消息体(Body)
可选部分,通常用于 POST/PUT 请求,携带实际数据。例如:
表单提交(Content-Type: application/x-www-form-urlencoded):
username=tom&password=123456
JSON 数据(Content-Type: application/json):

{"username": "tom", "password": "123456"}

完整示例:

POST /api/login HTTP/1.1
Host: example.com
User-Agent: curl/7.68.0
Accept: application/json
Content-Type: application/json
Content-Length: 43{"username": "alice", "password": "secret123"}
http://www.lryc.cn/news/603871.html

相关文章:

  • MoR vs MoE架构对比:更少参数、更快推理的大模型新选择
  • Ubuntu20.04子系统
  • Oracle发布MCP Server,自然语言交互说“人话”
  • AUTOSAR Mcal Gpt - 模块介绍
  • LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记
  • Jenkins 详解
  • Java 大视界 -- Java 大数据机器学习模型在金融信用评级模型优化与信用风险动态管理中的应用(371)
  • 当贝纯净版_海信ip811n海思mv320处理器安卓4.42及9.0主板优盘免拆刷机固件及教程
  • 符号计算与算法实践|使用Maple教授​​群论​​和​​图论​​课程
  • JSON解析(day20)
  • 【CF】Day114——杂题 (贪心 + 图论 | LCM + 贪心 | 最大最小子序列 + 图论)
  • 如何创建一个 Solana 钱包?
  • imx6ull-驱动开发篇3——字符设备驱动开发实验
  • C 语言第 12 天学习笔记:函数进阶应用与变量特性解析
  • 每日学习笔记记录(分享更新版-凌乱)
  • imx6ull-驱动开发篇2——字符设备驱动开发步骤
  • 网络通信基础(一)
  • Redis 跨主机连接超时分析:从网络波动到架构优化
  • 使用鼠标在Canvas上绘制矩形
  • 【C++算法】80.BFS解决FloodFill算法_岛屿数量
  • 《Java 程序设计》第 9 章 - 内部类、枚举和注解
  • 实在智能Agent智能体荣登全球“Go_Global_AI_100”百强榜,中国AI走向世界!
  • STM32——HAL库
  • 什么是EasyVR shield 3?如何设置EasyVR shield 3
  • 大模型应用开发模拟面试
  • 用动态的观点看加锁
  • TCMalloc 内存分配原理简析
  • 2-verilog-基础语法
  • Coze Studio概览(三)--智能体管理
  • sqli-labs通关笔记-第24关 SQL二次注入(单引号闭合)