目标:从特定元素(例如li)中提取文本,而忽略各种混合在标签中的内容,即展平第一级子级,并简单地分别返回每个展平型子级的串联文本。
例:
CIA
- Central Intelligence Agency.
- Culinary Institute of America.
所需文字:
Central Intelligence Agency
Culinary Institute of America
除了周围的定位标记阻止简单的检索。
为了分别返回每个li标签,我们使用简单的方法:
//div[contains(@id,"mw-content-text")]/ol/li
但这还包括周围的锚标签等。
//div[contains(@id,"mw-content-text")]/ol/li/text()
仅返回属于li的直接子元素的文本元素,即’Central’,’.’…
然后寻找自我和后代的文本元素似乎合乎逻辑
//div[contains(@id,"mw-content-text")]/ol/li[descendant-or-self::text]
但这根本没有任何回报!
有什么建议?我正在使用Python,因此可以使用其他模块进行后期处理。
(我正在使用似乎符合XPath 1.0的Scrapy HtmlXPathSelector)