python - Scrapy:使用scrapy和xpath时如何同时获取文本和带有<b>标签的文本?

标签 python xpath scrapy

我需要从下面的 html 中获取 183.7

<span class="price"><b>183</b>.7</span>

但是如果使用 scrapy shell 模式运行下面的代码,则只有 '.7' 可用

response.xpath('//span[@class="price"]/text()').get() 

如何编写代码来获取完整的数字?

我已阅读 Scrapy 教程 http://doc.scrapy.org/en/1.7/topics/selectors.html#topics-selectors 但我仍然很难理解正确的 xpath 设置来获取我需要的值。

如果我尝试

response.xpath('//span[@class="price"]').get() 

返回

['<span class="price"><'b>183</'b>.7 </span>']

这也不是我真正需要的。

最佳答案

您可以使用“//”来获取元素上的所有子文本,如下所示:

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

关于python - Scrapy:使用scrapy和xpath时如何同时获取文本和带有<b>标签的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433912/

相关文章:

python - CrawlSpider 无法解析 Scrapy 中的多页

python - 我应该如何使用 Numpy 的样式记录类和对象属性?

python - Selenium XPath 逻辑 AND 连接多个 contains() 过滤器?

java - 使用 DOM 解析器在 xml java 中使用子节点搜索特定节点

java - 如何通过 Java 使用 Selenium 定位文章标签内的按钮

python - 将 html 兄弟作为单独的项目抓取?

python - 如何固定第二个 y 轴的体积范围

python - 通过带有文件附件的 slack api 发布消息

python - NLP - 如何添加更多功能?

python - 通过命令行调用scrapy的自定义导出器