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

请求谷歌金融股票数据时遇urllib.error.HTTPError 403 Forbidden错误求修复

修复HTTP Error 403: Forbidden的问题

这个403错误是Google的反爬虫机制在起作用——它检测到你的请求不是来自真实浏览器,所以直接拒绝了访问。解决这个问题的核心就是伪装成浏览器发送请求,同时规范URL的处理方式。

修复后的代码

import re
import urllib.request
from urllib.parse import quote

# 修正原URL的转义字符,HTML转义的&要替换为实际的&
base_url = 'https://www.google.com/search?tbm=fin&ei=ULxUWpvZJoKE8wWWzLDgBw&q='
stock_name = input('Enter your stock name:')

# 对股票名称做URL编码,避免特殊字符破坏URL格式
encoded_stock = quote(stock_name)
full_url = base_url + encoded_stock

# 构造请求头,模拟真实浏览器访问
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
req = urllib.request.Request(full_url, headers=headers)

try:
    with urllib.request.urlopen(req) as response:
        data = response.read().decode('utf-8')
        print(data)
except urllib.error.HTTPError as e:
    print(f"请求出错: {e}")

关键改动说明

  • 修正URL格式:原URL里的&是HTML转义字符,在Python代码里必须替换为实际的&,否则URL会被识别为无效。
  • 添加浏览器身份标识:通过User-Agent请求头告诉Google服务器,你的请求来自真实浏览器,绕过基础反爬拦截。你可以替换成自己当前使用浏览器的UA值。
  • URL编码输入内容:用urllib.parse.quote()处理股票名称,避免输入包含空格、特殊字符时导致URL解析错误。
  • 增加异常捕获:用try-except包裹请求逻辑,让代码遇到错误时能给出清晰提示,更健壮。

需要注意的是,Google的金融搜索反爬策略可能随时调整,长期稳定获取股票数据建议使用官方合规的金融API,但当前方案可以直接解决你遇到的403问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:22:49