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

一、Request请求伪装解析

#UA:User-Agent(请求载体身份标识)

#UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份呢标识为某一款浏览器,说明该请求是一个正常的请求,

#但是如果检测到请求的载体身份标识不是基于某一款浏览器的,则表示为不正常的请求(爬虫),则服务器端就很有可能拒绝该请求。

#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

python 复制代码
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),每行一个,常见字段:

字段名 示例值 作用说明
Host www.example.com 目标主机域名(HTTP/1.1 必须字段)
User-Agent Mozilla/5.0 (Windows NT 10.0) 客户端软件标识
Accept text/html,application/xhtml+xml 客户端能处理的媒体类型
Accept-Encoding gzip, deflate 支持的压缩算法
Content-Type application/json Body 的数据类型(POST/PUT 必填)
Content-Length 348 Body 的字节长度
Authorization Bearer token123 身份验证凭证
Cookie sessionid=abc123 携带的 Cookie 数据
Cache-Control no-cache 缓存控制策略

3. 消息体(Body)

可选部分,通常用于 POST/PUT 请求,携带实际数据。例如:

表单提交(Content-Type: application/x-www-form-urlencoded):

username=tom&password=123456

JSON 数据(Content-Type: application/json):

python 复制代码
{"username": "tom", "password": "123456"}

完整示例:

python 复制代码
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"}
相关推荐
黎雁·泠崖4 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
2301_763472465 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ5 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha5 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy6 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
lly2024066 小时前
C++ 文件和流
开发语言
m0_706653236 小时前
分布式系统安全通信
开发语言·c++·算法
喵手6 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
寻寻觅觅☆6 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++