使用XPath抓取同类名Div时遇阻,无法获取车身样式
解决Scrapy提取车身样式的XPath问题
问题分析
你当前的XPath仅提取目标div的直接文本节点,但网页中车身样式的文本通常嵌套在子元素中,或被空白节点分隔,导致直接用/text()无法获取有效内容。
可行解决方案
以下几种XPath写法可以解决问题:
提取所有子节点文本并清理
先获取目标div下所有层级的文本,再过滤空白字符并合并:body_style = response.xpath(".//div[@class='vdp-info-media vdp-body-style']//text()").getall() body_style = ''.join([text.strip() for text in body_style if text.strip()])直接定位子元素文本
如果车身样式文本在div的子元素(如span)中,可直接定位该子节点:body_style = response.xpath(".//div[@class='vdp-info-media vdp-body-style']/span/text()").get().strip()使用
normalize-space()简化处理
该函数会自动去除文本前后空白并合并中间冗余空格,一步到位:body_style = response.xpath("normalize-space(.//div[@class='vdp-info-media vdp-body-style'])").get()
内容的提问来源于stack exchange,提问作者Yonatan Gebreyesus
相关产品推荐
相关产品推荐

