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

urllib.request解析TD Ameritrade页面数据与显示不一致问题

问题现象

使用urllib.request与BeautifulSoup爬取TD Ameritrade网站数值数据时,疑似触发站点反爬机制,返回错误数值阻碍抓取:

  • 爬取目标URL:https://research.tdameritrade.com/grid/public/research/stocks/earnings?symbol=goog
  • 代码解析得到的下次财报日期为(Unconfirmed) July 25, 2022
  • 浏览器正常访问时,页面HTML中实际展示的财报日期为July 26, 2022

待确认问题:

  • 数据不一致是网站反爬机制导致,还是代码编写存在错误?
  • 是否有可行方案绕过该问题?
复现代码
from urllib.request import Request,urlopen
from bs4 import BeautifulSoup as soup

url = 'https://research.tdameritrade.com/grid/public/research/stocks/earnings?symbol=goog'

request_site = Request(url)
page_html = urlopen(request_site).read()
page_soup = soup(page_html, "html.parser")


earnings = page_soup.findAll("td", {"class": "value week-of"})

earnings = earnings[0].text
print(earnings)
原因说明与解决方案

问题原因

数据差异不是代码解析逻辑错误导致,核心是原生urllib发起的请求缺少正常浏览器的请求特征,被站点反爬规则识别为爬虫流量,返回了和真实访问存在偏差的兜底内容:

  • 原生urllib默认请求的User-Agent字段会直接暴露爬虫身份,站点对这类非浏览器请求不会返回校验后的准确业务数据,而是返回带未确认标记、日期存在偏差的通用内容。
  • 缺省请求没有携带正常浏览器会附带的Accept、Accept-Language等基础头字段,进一步提升了被反爬规则识别的概率。

可行解决方法

  1. 给请求补充和真实浏览器一致的基础请求头,最核心是补全User-Agent字段模拟普通桌面浏览器请求,修改后的可运行示例如下:
from urllib.request import Request,urlopen
from bs4 import BeautifulSoup as soup

url = 'https://research.tdameritrade.com/grid/public/research/stocks/earnings?symbol=goog'
# 补充标准浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9"
}
request_site = Request(url, headers=headers)
page_html = urlopen(request_site).read()
page_soup = soup(page_html, "html.parser")

earnings = page_soup.findAll("td", {"class": "value week-of"})
earnings = earnings[0].text.strip()
print(earnings)
  1. 如果补全基础请求头后依然获取到错误数据,可以打开浏览器的开发者工具,在网络面板中找到对应页面的请求,复制完整的请求头(包含站点下发的Cookie字段)配置到代码中即可。
  2. 爬取时控制请求频率,单IP请求间隔保持在2-3秒以上,不要短时间发起大量并发请求,避免触发IP封禁类的更严格反爬策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:45:37