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

Python用requests+BeautifulSoup爬取网页出现403、400错误如何解决

问题原因

  • 初始无请求头访问返回403,是因为目标站点拦截了无User-Agent标识的爬虫请求,requests默认的UA会被识别为爬虫直接拒绝。
  • 加请求头后返回400的原因有两个:
    1. 请求头字段名拼写错误,你定义的header键为User Agent(中间为空格),HTTP标准的UA字段名是User-Agent(中间为半角横杠),错误的字段名会导致服务端无法解析请求,返回400错误。
    2. 代码存在变量覆盖问题:你先发送带header的请求后,又执行了不带header的html_doc=requests.get(x),覆盖了之前的请求结果,实际解析的还是无header的请求返回内容。

优化方案

你后续使用Session的修复方案已经解决了核心问题,也可以用普通get请求实现,适配性更高的版本如下:

import requests
from bs4 import BeautifulSoup

url = 'https://www.topstockresearch.com/INDIAN_STOCKS/COMPUTERS_SOFTWARE/Wipro_Ltd.html'
headers = {
    # 使用主流桌面浏览器UA,避免被部分站点拦截老旧移动设备UA
    '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'
}
resp = requests.get(url, headers=headers)
# 自动匹配页面编码,避免出现中文乱码问题
resp.encoding = resp.apparent_encoding
soup = BeautifulSoup(resp.text, 'lxml')
print(soup)

注意事项

个人学习用途爬取请合理控制请求频率,避免对站点正常服务造成压力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:09:03