如果它是使用 XPath 在 Scrapy 中的其他节点的父节点,如何从子节点获取文本

Posted

技术标签:

【中文标题】如果它是使用 XPath 在 Scrapy 中的其他节点的父节点,如何从子节点获取文本【英文标题】:How to get the text from child nodes if it is parents to other node in Scrapy using XPath 【发布时间】:2014-12-25 04:58:27 【问题描述】:

我面临一个问题,我必须从子节点获取结果,该子节点可能是也可能不是在 scrapy 中使用 Xpath 的其他节点的父节点。考虑这种情况

<h1 class="main">
 <span class="child">data</span>
</h1>

<h1 class="main">
<span class="child">
 <span class="child2">data</span>
</span>
</h1>

我的解决方案是response.xpath(".//h1[@class='main']/span/text()").extract()

【问题讨论】:

【参考方案1】:

使用//text,它将从您的span 中返回列表中的所有文本元素,包括父项和子项:

response.xpath(".//h1[@class='main']/span//text()").extract()

【讨论】:

@PramodBisht,如果我的回答可以帮助您解决问题。请接受我的回答/点赞:) 投票至少需要 15 分,我是初学者,只有 1 分。希望你能理解。 @PramodBisht,感谢 :)【参考方案2】:

你可以使用:

response.xpath("string(.//h1[@class='main']/span)").extract() 甚至response.xpath("string(.//h1[@class='main'])").extract(),如果您关注的是整个标题文本

【讨论】:

以上是关于如果它是使用 XPath 在 Scrapy 中的其他节点的父节点,如何从子节点获取文本的主要内容,如果未能解决你的问题,请参考以下文章

使用scrapy中的itemloader返回在给定xpath中找不到的项的默认响应

在 Scrapy 中连接 Xpath 嵌套文本

Xpath 使用 Scrapy 在下一个兄弟标签中获取信息

Spider-scrapy 中的 xpath 语法与调试

Scrapy xpath在scrapy shell中返回空列表

Scrapy/Python/XPath - 如何从数据中提取数据?