使用Python爬取站点时无法访问,Chrome可正常访问如何解决?
解决Python requests无法访问目标站点的问题
以下是几个可行的排查和解决方向:
补充Cookie字段
浏览器访问站点时会携带Cookie验证身份或会话状态,你的requests代码缺少这部分信息,大概率是被站点拦截了。
操作步骤:- 打开Chrome开发者工具(F12),切换到「网络」标签
- 刷新目标页面,找到对应请求,查看「请求头」里的
Cookie字段 - 将完整Cookie内容复制到headers中,添加
'Cookie': '你的Cookie内容'
补全完整请求头
仅User-Agent和Referer可能不够,站点可能会校验更多请求头字段。把浏览器请求头里的Accept、Accept-Language、Accept-Encoding、Connection等字段都复制到headers中,尽量和浏览器请求保持一致。使用会话保持
用requests.Session()模拟浏览器的会话状态,自动维持Cookie等会话信息,比单次请求更贴近真实用户行为:import requests url = "https://cafe.bithumb.com/view/boards/43?keyword=¬iceCategory=9" headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', "Referer": "https://cafe.bithumb.com/", # 这里补充从浏览器复制的Cookie和其他请求头字段 } try: session = requests.Session() # 先访问首页建立会话 session.get("https://cafe.bithumb.com/", headers=headers) response = session.get(url, headers=headers, timeout=10) response.raise_for_status() print(response.text) except requests.exceptions.RequestException as err: print(f"error: {err}")检查IP是否被拦截
如果以上方法都无效,可能是你的请求IP被站点封禁。可以尝试更换网络(比如用手机热点),或者使用代理IP进行请求。
内容的提问来源于stack exchange,提问作者Changmin Lee
相关产品推荐
相关产品推荐

