【问题标题】:How to extract text from lxml.etree tags based on value of sibling tags如何根据兄弟标签的值从 lxml.etree 标签中提取文本
【发布时间】:2017-01-18 22:56:16
【问题描述】:

我的目标是从 xml 文档(链接)中提取 url 并将它们放在一个列表中: https://www.valuespreadsheet.com/iedgar/results.php?stock=NFLX&output=xml

我从lxml 导入了etree,并创建了一个从所有<instanceUrl> 标签中提取文本的列表理解。

url = 'https://valuespreadsheet.com/iedgar/results.php?stock=NFLX&output=xml' 
et = etree.fromstring(urlopen(url).read())
return [_.find('instanceUrl').text for _ in et.find('filings')]

现在,我想限制列表,使其仅从 <instanceUrl> 标签中提取文本,其中 <formType>=10K。

我怎样才能做到这一点?

【问题讨论】:

标签: python lxml


【解决方案1】:

你需要一个XPath expression and the xpath() method

[url.text for url in et.xpath('//filing[formType = "10-K"]/instanceUrl')]

在这里,我们使用10-K 文本过滤包含formType 子节点的filing 节点,然后得到instanceUrl 子节点。

请注意,_ 变量名用于一次性变量 - 必须定义但未实际使用的变量(例如在解包期间)。在您的情况下,您实际上已经使用了它。

【讨论】:

  • 感谢有关如何使用_ 变量名的答案、解释和建议!
猜你喜欢
  • 1970-01-01
  • 2020-11-01
  • 2012-09-14
  • 2012-11-07
  • 2020-03-24
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多