Scrapy多HTML标签数据提取问题:如何获取完整文本
解决Scrapy提取嵌套标签文本不完整的问题
你的问题出在XPath的text()用法上——/text()只能获取当前节点的直接子文本节点,而<p>里嵌套的<strong>或<a>标签的文本是它们的子节点,自然不会被提取到。给你两种简单的解决方法:
方法1:提取所有后代文本再拼接
用//text()选取目标节点下所有层级的文本节点,再用字符串拼接得到完整内容:
full_text = ''.join(response.xpath('//div[@class="whatever3"]/p[2]//text()').extract()).strip()
//text():匹配<p[2]>下所有后代的文本节点,不管嵌套多少层标签''.join():把提取到的文本列表拼接成完整字符串.strip():移除首尾多余的空格或换行
方法2:使用XPath的string()函数(更简洁)
直接用string()函数获取目标节点内的全部文本内容,包括嵌套标签里的内容:
full_text = response.xpath('string(//div[@class="whatever3"]/p[2])').get()
这个方法一步到位,不需要额外拼接,返回的就是完整的"The cat sat on the mat."字符串。
内容的提问来源于stack exchange,提问作者Adam Mac
相关产品推荐
相关产品推荐

