目标:从特定元素(例如li)中提取文本,同时忽略各种混合标签,即展平第一级子元素并简单地分别返回每个展平子元素的拼接文本。HTML XPath:提取混合了多个标签的文本?
例子:
CIA
- Central Intelligence Agency.
- 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 –