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

可正常访问的URL用urllib请求返回HTTP Error 404: Not Found问题求助

问题原因

雅虎财经配置了反爬虫校验机制,会校验HTTP请求的User-Agent字段识别请求来源,你直接用urllib.urlopen发起请求时,默认的User-Agent会标记为Python爬虫,被服务端拦截后返回404错误,和URL本身是否可访问无关。

解决方法

  • 构造自定义请求头,把User-Agent设置为普通浏览器的标识,模拟浏览器发起请求
  • 用urllib.request.Request封装请求对象,再调用urlopen访问

修改后的可运行代码如下:

import pandas as pd
from bs4 import BeautifulSoup
import urllib.request as ur

index = 'MSFT'
url_is = 'https://finance.yahoo.com/quote/' + index + '/financials?p=' + index
# 构造自定义请求头,模拟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'
}
# 封装请求对象
req = ur.Request(url=url_is, headers=headers)
# 发起请求读取数据
read_data = ur.urlopen(req).read()

如果修改UA后仍然被拦截,可以补充Accept、Referer等更多浏览器默认携带的请求头字段,进一步还原真实浏览器的请求特征即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:18:01