使用Python请求hh.ru页面返回404,浏览器可正常访问如何解决?
解决hh.ru请求返回404的问题
问题描述
尝试用Python的requests库请求hh.ru的职位搜索页面,代码如下:
url = 'https://hh.ru/search/vacancy' print(url) hh = requests.get(url) hh_text = hh.text print(hh_text)
运行后返回404错误,但该链接在浏览器中可以正常访问。
解决方法
hh.ru的反爬机制会识别非浏览器的请求,默认情况下requests发送的请求头没有模拟浏览器特征,因此被拦截返回404。只需添加模拟浏览器的请求头即可解决:
- 给
requests.get()方法添加headers参数,包含User-Agent(浏览器标识)等关键字段 - 修改后的示例代码:
import requests url = 'https://hh.ru/search/vacancy' # 模拟Chrome浏览器的请求头,可根据自己的浏览器实际信息调整 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' } response = requests.get(url, headers=headers) # 验证状态码和返回内容 print(response.status_code) print(response.text[:500])
补充说明
User-Agent是核心字段,它告诉服务器请求的来源设备和浏览器信息,替换成你当前使用的浏览器实际UA效果更好(可在浏览器开发者工具的Network面板中查看)- 如果后续仍遇到反爬限制,可尝试使用
requests.Session()维持会话,或者添加更多请求头字段(如Accept、Referer等)
内容的提问来源于stack exchange,提问作者Анатолий Фролов
相关产品推荐
相关产品推荐

