You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy使用XPath选择器无法获取元素完整文本的解决方案

Scrapy XPath选择器无法获取元素完整文本问题

问题复现

使用Scrapy框架做网页数据爬取时,调用XPath选择器无法获取目标元素的全部信息,相关页面源码从浏览器开发者模式提取,内容如下:

<address class="location-row-address" data-qa-target="provider-office-address">
230 W 13th St Ste 1b<!-- 
--> <!-- 
-->New York<!-- 
-->, <!--
-->NY<!-- 
--> <!-- 
-->10011<!--
--> 
</address>

最初使用的XPath选择器语句为:

response.xpath('//*[@id="summary-section"]/div[1]/div[2]/div/div/div[2]/div[1]/address/text()').get()

执行语句后仅返回首个文本片段:

230 W 13th St Ste 1b

预期获取的完整地址结果为:

230 W 13th St Ste 1b New York, NY 10011

问题原因

XPath的text()表达式只会选取目标元素下的独立直接文本节点,上述地址内容被多个HTML注释节点切割为多段独立文本,直接调用text()后接get()只会返回匹配到的第一个文本节点,无法获取被注释分隔的其余文本内容。

解决方案

使用XPath的string()方法包裹目标元素节点,该方法会自动拼接指定元素节点下的所有字符串内容,配合get()方法即可获取完整文本,修正后的XPath语句如下:

response.xpath('string(//*[@id="summary-section"]/div[1]/div[2]/div/div/div[2]/div[1]/address)').get()

内容的提问来源于stack exchange,提问作者Shahidul Islam Pranto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:36:13