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

Python如何抓取带行数选择下拉框的网页表格:以Zacks财报日历为例

Zacks网站财报日历表格数据抓取问题及解决方案

问题背景

抓取目标为zacks.com单股财报日历表格的全量数据,目标页面地址为https://www.zacks.com/stock/research/{symbol}/earnings-calendar(此处以AAPL为例)。
该页面的财报日历表格支持通过下拉选择器调整单页展示行数,可选值包括10、25、50、100行,选择100行后页面URL不会发生变更,无法通过直接修改URL参数获取全量数据。
由于网站会拦截默认User-Agent的请求,因此采用Chrome Driver模拟真人访问的方式抓取数据,初始代码如下:

driver = webdriver.Chrome('../files/chromedriver96')
symbol = 'AAPL'
url = 'https://www.zacks.com/stock/research/{}/earnings-calendar'.format(symbol)
driver.get(url)
content = driver.page_source
d = pd.read_html(content)
d[4]

代码运行后,通过pd.read_html解析得到的表格列表中,d[4]为目标财报日历表格,但仅返回默认的10行数据,无法获取100行全量数据。

问题调研说明

此前已检索多个同类问题的公开解决方案,均不适用于当前场景。

最终实现方案

通过Selenium模拟操作下拉选择器,切换到单页展示100行的模式,等待表格加载完成后再解析页面源码即可获取全量数据,补充的操作代码如下:

# 定位表格行数选择下拉框
dropdown = driver.find_element_by_css_selector('#earnings_announcements_earnings_table_length')
time.sleep(1)
# 定位100行选项并触发点击
hundreds = dropdown.find_element_by_xpath(".//option[. = '100']")
hundreds.click()
# 点击后可增加显式等待逻辑,确认表格加载完成后再读取page_source解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:07