html li标签中的dr,HTML XPath:提取混合了多个标签的文本?

博客探讨如何在Python中使用Scrapy和HtmlXPathSelector从HTML中提取特定元素(如li)的文本,同时忽略嵌套标签。目标是提取‘中央情报局’和‘美国的烹饪学院’等独立的文本片段,但遇到包含锚标签的情况使得直接提取变得复杂。作者尝试了不同的XPath表达式,如//div[contains(@id,mw-content-text)]/ol/li和//div[contains(@id,mw-content-text)]/ol/li/text(),但未得到期望结果。讨论了XPath的descendant-or-self轴,但没有返回任何文本。寻求解决方案,建议可能涉及更复杂的后期处理或XPath表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:从特定元素(例如li)中提取文本,同时忽略各种混合标签,即展平第一级子元素并简单地分别返回每个展平子元素的拼接文本。HTML XPath:提取混合了多个标签的文本?

例子:

CIA

  1. Central Intelligence Agency.
  2. Culinary Institute of America.

所需的文本:

中央情报局

美国

的烹饪学院除了周围的锚标记防止简单的检索。

要单独返回每个L1标签,我们使用简单:

//div[contains(@id,"mw-content-text")]/ol/li

但也包括围绕锚标签等,并

//div[contains(@id,"mw-content-text")]/ol/li/text()

只返回文本元素是直接的孩子李,即'中央','。'...

看起来很合乎逻辑然后寻找自己和后代的文本元素

//div[contains(@id,"mw-content-text")]/ol/li[descendant-or-self::text]

但是根本没有任何回报!

有什么建议吗?我使用Python,因此我愿意使用其他模块进行后期处理。

(我用的是Scrapy HtmlXPathSelector这似乎的XPath 1.0标准)

2012-05-16

ChaimKut

+0

可能有用:http://stackoverflow.com/questions/4378502/xpath-return-all-non-blank-text-nodes-not-descendant-of-a-style-or-script/6303276 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值