Scrapy/XPath 从不同的标签中提取文本 (<p> OR <li>)

问题描述

我正在尝试从网站上抓取文本。有时,文本是用项目符号写的,有时只是纯文本。

项目符号中的文本 (XPath):/article/div[@class='border-bottom-grau'][1]/ul/li[1]

纯文本文本 (XPath):/article/div[@class='border-bottom-grau'][1]/p

我需要提取相应的文本(没有 div/ul/li/p 标签等)。这是我迄今为止尝试过的:

info_Aufgabengebiet = info.xpath(".//article/div[@class='border-bottom-grau'][1][descendant::text()]").extract()

输出:见图片Output

我还尝试了后裔或自我,最后是一个 /text(),但都没有奏效。简单地说,我想提取所有文本,无论是项目符号还是纯文本。应该只添加 Pullet 点,也许带有“;”或“,”。

非常感谢任何帮助

谢谢

解决方法

您可以将 XPath 与组合条件结合使用

"/article/div[@class='border-bottom-grau'][1]/ul/li[1] | /article/div[@class='border-bottom-grau'][1]/p"
,

另一个答案中提到的联合运算符 | 是一个很好的解决方案。或者,根据您的输出需求,您可以尝试

/article/div[@class='border-bottom-grau'][1]//*[self::p or self::li]