编辑
2025-08-22
测试
00
请注意,本文编写于 105 天前,最后修改于 103 天前,其中某些信息可能已经过时。

目录

Requests 库学习总结:
一、Cookie 相关操作
(一)从响应中获取与转换 Cookie
(二)字符串 Cookie 转字典
二、Header 与 User - Agent
三、文件操作深入解析
文件打开模式

Requests 库学习总结:

近期学习了 Python 的 Requests 库,在网页请求、信息处理及内容存储等方面有一定收获,现在从 Cookie 处理、Header 与 User - Agent、文件操作进行总结。

一、Cookie 相关操作

Cookie 是服务器传递给客户端的小文本文件,用于记录用户信息,在维持用户会话等场景中作用关键。

使用 requests.get 发送请求后,response.cookies 可获取 CookieJar 对象形式的 Cookie。若要更便捷地以键值对形式操作 Cookie,可借助 requests.utils 模块的方法转换:

python
import requests url = 'http://www.baidu.com' response = requests.get(url) # 获取 CookieJar 形式的 Cookie 并打印 print(response.cookies) # 将 CookieJar 转换为字典形式并打印 dict_cookies = requests.utils.dict_from_cookiejar(response.cookies) print(dict_cookies) # 将字典转换回 CookieJar 形式并打印 jar_cookies = requests.utils.cookiejar_from_dict(dict_cookies) print(jar_cookies)

当获取到字符串形式的 Cookie 时,也能将其转为字典以便操作。比如有字符串 temp 存储 Cookie 信息:

python
temp = "name=value; age=18; gender=male" cookie_list = temp.split(';') cookies = {cookie.split('=')[0].strip(): cookie.split('=')[-1] for cookie in cookie_list} print(cookies)

这里先按 ; 分割字符串得到 Cookie 列表,再通过字典推导式,按 = 分割每个 Cookie 项,生成键值对形式的字典。

二、Header 与 User - Agent

Header(请求头)包含请求的相关信息,User - Agent 是 Header 中的一个字段,它能让服务器识别客户端的操作系统及浏览器等信息。在请求中设置合适的 User - Agent,有助于模拟正常的浏览器请求,避免被服务器识别为异常请求而拒绝访问。例如:

python
import requests url = "https://example.com" headers = { "User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } response = requests.get(url, headers=headers)

三、文件操作深入解析

获取网页内容(如 HTML 源码、图片、视频)后,需将其存储到本地。Python 的 open() 函数结合 with 语句是安全高效的文件操作方式,核心在于理解 文件打开模式数据类型匹配

文件打开模式

open() 函数的模式参数决定操作类型(读/写/追加)和数据格式(文本/二进制),常见模式如下表所示:

模式含义数据类型适用场景
r只读模式(默认),文件不存在则报错文本读取 .txt.html 等文本文件
w只写模式,文件不存在则创建,存在则覆盖文本写入纯文本数据(如爬取的文章内容)
a追加模式,文件不存在则创建,内容追加到末尾文本记录爬虫日志、累计存储多条数据
x独占创建模式,文件已存在则报错文本/二进制确保文件是新创建的(避免误覆盖)
rb二进制只读模式二进制读取图片、视频、PDF 等非文本文件
wb二进制只写模式二进制保存图片、视频、压缩包等二进制数据
ab二进制追加模式二进制向二进制文件追加数据(较少用)
r+读写模式,文件不存在则报错文本先读内容再修改(如更新配置文件)
wb+二进制读写模式二进制先写二进制数据再读取(较少用)

本文作者:haotian

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!