Xpath使用属性选择器后提取文本

时间:2019-01-04 14:02:42

标签: xpath web-scraping scrapy html-parsing

我想仅使用Xpath代码从HTML文件中提取一些文本。我在Chrome控制台中通过以下方式提取了文本:

1)TEXT=$x('//*[@id="olpOfferListColumn"]')

2)TEXT[0].innerText

但是现在,我只想将这两个命令与XPath结合在一起。 我当然试过像这样的工作人员:

TEXT=$x('//*[@id="olpOfferListColumn"]/text()') 

TEXT=$x('//*[@id="olpOfferListColumn"]/::text()') 

2 个答案:

答案 0 :(得分:1)

  1. //*[@id="olpOfferListColumn"]/text()表示要返回子文本节点。但是#olpOfferListColumn元素没有子文本节点,但是有后代文本节点(要获取所有后代文本节点,您可能需要使用//*[@id="olpOfferListColumn"]//text()

  2. //*[@id="olpOfferListColumn"]/::text()-无效的XPath

尝试

string(//*[@id="olpOfferListColumn"])

获取#olpOfferListColumn的所有文本内容(innerText属性的类似物)

答案 1 :(得分:0)

要提取特定id元素的文本,

xpath = '//*[@id="olpOfferListColumn"]/text()'

它将使用id=olpOfferListCloumn

获得元素的文本

如果您希望每个文本节点都位于特定元素中

使用:

xpath = '//*[@id="olpOfferListColumn"]//text()'