You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Requests POST请求Cookie格式及BS4解析前Cookie设置问题

如何正确设置Python Requests中的Cookie(解决POST请求Cookie不生效问题)

嘿,我看到你在使用Requests和BeautifulSoup时遇到了Cookie设置不生效的问题,咱们来一步步搞定它!

首先,你代码里的核心问题出在Cookie值的格式上。Chrome开发者工具里显示的&是HTML转义后的字符——浏览器在显示Cookie的时候会把特殊字符转义,但实际发送给服务器的Cookie值里应该是普通的&符号。你直接把转义后的&放到代码里,服务器根本识别不了这个Cookie值,所以自然不会生效。

接下来,咱们修正代码,顺便优化一下Session的使用方式:

from bs4 import BeautifulSoup
import requests

url = 'https://example.com/item/123.html'
# 把HTML转义的&替换成真实的&符号
cookies = {'aep_usuc_f': 'site=rus&c_tp=USD&region=IE&b_locale=ru_RU'}

# 初始化Session
s = requests.Session()
# 直接把Cookie更新到Session的cookies中,不需要先做POST请求
s.cookies.update(cookies)

# 可选:加上User-Agent模拟浏览器,很多网站会校验这个
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 发送GET请求,Session会自动带上设置好的Cookie
r = s.get(url, headers=headers)

# 解析页面
soup = BeautifulSoup(r.text, 'lxml')

额外的检查小技巧

如果你还是不确定Cookie是否生效,可以做这些验证:

  • 打印Session的cookies,确认是否正确加载:print(s.cookies)
  • 查看响应的状态码:print(r.status_code),200是正常,403/401可能是Cookie或反爬问题
  • 打印响应内容的前几百字符,看看是不是你期望的页面:print(r.text[:500])

另外,你之前代码里先POST再GET的操作其实没必要——只要把Cookie放到Session里,后续所有请求都会自动带上它,不需要先通过POST来“激活”Cookie。

内容的提问来源于stack exchange,提问作者Android_Minsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:10:56