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

如何使用XPath从路透社财报页面提取31-Dec-19日期?

如何用XPath提取IMAX年报中的日期31-Dec-19?

嘿,我看你在爬路透社IMAX的年度利润表时,成功拿到了报表的指标列名,但卡在提取目标日期31-Dec-19上了。我帮你梳理下问题,给你几个实用的XPath方案:

你之前的XPath //th/span/text() 只定位了报表的指标名称表头,而日期其实在另一个表头分组里,所以自然拿不到目标内容。下面是针对路透社这个页面结构的解决方案:

方案一:利用属性精准定位日期列

路透社的财报日期列会带有专属的data-testid属性,用这个定位最可靠,不容易因为页面样式变动失效:

//th[contains(@data-testid, "financials-date-column")]/span/text()

把这个XPath加到你的代码里,就能直接拿到所有年度日期,其中就包含你要的31-Dec-19。

方案二:通过表格结构定位

如果上面的属性定位失效(比如网站更新了属性名),可以通过表格的层级结构来定位:

//div[contains(@class, "financials-table")]//thead//th[not(contains(@class, "sticky"))]/span/text()

这个路径的逻辑是:

  • 先找到包裹财报表格的外层容器div.financials-table
  • 定位表格的表头区域thead
  • 排除掉固定在左侧的指标列表头(带sticky类的),剩下的就是日期列的表头

完整代码示例

把日期提取的逻辑整合到你的代码里:

import requests
from lxml import html

# 请求页面
response = requests.get('https://www.reuters.com/companies/IMAX.P/financials/income-statement-annual')
tree = html.fromstring(response.content)

# 提取日期
dates = tree.xpath('//th[contains(@data-testid, "financials-date-column")]/span/text()')
# 提取指标列名
columns = tree.xpath('//th/span/text()')

print("提取到的日期列表:", dates)

运行后,dates列表里就会包含你需要的31-Dec-19啦。另外,这个页面是静态渲染的,用requests直接请求就能拿到完整内容,不需要额外处理JS加载的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:12:45