
PyQuery 支持通过 headers 参数自定义 HTTP 请求头,只需传入包含 "user-agent" 键的字典即可模拟真实浏览器访问,避免被目标网站拒绝或限流。
pyquery 支持通过 `headers` 参数自定义 http 请求头,只需传入包含 `"user-agent"` 键的字典即可模拟真实浏览器访问,避免被目标网站拒绝或限流。
PyQuery 本身不直接处理网络请求,而是依赖底层的 requests 库(当使用 url 参数时)。因此,它提供了 headers 参数,允许你在发起 HTTP GET 请求时注入自定义请求头——其中最关键的就是 User-Agent,用于标识客户端身份。
以下是最简实践示例:
import pyquery
# 指定自定义 User-Agent,伪装成主流浏览器
pqobj = pyquery.PyQuery(
url="https://www.example.com/",
headers={
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
)
html = pqobj.html()
plain_text = pqobj.text()✅ 关键要点:
- headers 必须为标准 Python 字典,键名严格区分大小写(推荐小写 "user-agent",requests 会自动规范化);
- User-Agent 字符串建议选用真实、常见的浏览器标识(如 Chrome、Firefox 最新版),可参考 useragentstring.com;
- 若未显式传入 headers,PyQuery 默认使用 requests 的默认 UA(类似 python-requests/x.x.x),极易被反爬识别;
- 其他常用请求头(如 Accept, Accept-Language, Referer)也可一并加入 headers 字典,增强请求可信度。
⚠️ 注意:PyQuery 不支持全局设置默认 UA;每次调用含 url 的构造需单独传入 headers。如需复用,建议封装为工具函数:
def get_pq(url, ua=None):
headers = {"user-agent": ua or "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}
return pyquery.PyQuery(url=url, headers=headers)
doc = get_pq("https://httpbin.org/user-agent")
print(doc("body").text()) # 输出服务端解析到的 UA合理设置 User-Agent 是 Web 抓取的基础合规实践,既提升请求成功率,也体现对目标站点的尊重。

















