Python Scrapy使用XPath提取div内HTML内容返回异常如何解决
问题原因
原写法//*[@id='tab-description']/p会匹配id="tab-description"容器下所有直接子级的<p>标签,返回包含多个p元素的列表,会把描述区域其他无关的p标签内容一并抓取,因此返回结果不符合预期。
调整方案
根据页面实际DOM结构,选以下任意一种写法即可拿到目标内容:
- 按节点顺序匹配:你需要的商品参数内容是
tab-description容器下的第一个直接子p标签,直接取第一个匹配结果即可:
response.xpath("//*[@id='tab-description']/p[1]").extract_first()
- 按内容特征匹配(兼容性更强,不受节点顺序变动影响):定位到包含"Brand Name:"文本的p标签提取:
response.xpath("//*[@id='tab-description']/p[contains(.,'Brand Name:')]").extract_first()
效果说明
以上两种写法运行后都会直接返回你期望的、包含完整商品参数的p标签HTML内容,不会混入其他无关描述数据。
内容的提问来源于stack exchange,提问作者Hannah James
相关产品推荐
相关产品推荐

