我正在抓取此页面以获取每个广告的数据:http://www.cars2buy.co.uk/business-car-leasing/Abarth/695C/?
这是我在scrapy shell中的代码:
scrapy shell "http://www.cars2buy.co.uk/business-car-leasing/Abarth/695C/"
for content in response.xpath('//*[@class="pitem"]/div[1]/div[2]/div[1]'):
print content.xpath('//*[@class="detail"]/p/text()[2]').extract()
但每次迭代只提取48 !! 疾病输出应该是:
48个月
48个月
48个月
36个月
48个月
48个月
48个月
48个月
48个月
36个月
根据页面上的广告!有什么建议吗?
答案 0 :(得分:1)
轻松修复。尝试在第二个xpath的前面添加.
:
print content.xpath('.//*[@class="detail"]/p/text()[2]').extract()
<强>解释强>
以/
开头的xpath表示“开始在文档根目录搜索”,而以.
开头的xpath表示“在当前位置开始搜索”...所以它非常像导航文件系统的目录。
所以没有.
你的xpath表达式提取了页面上任何地方的所有匹配元素......并且在每次迭代中都这样做了。
<强>更新/加成强>
当xpath表达式用于此示例中的content
之类的子元素(scrapy lingo中的“selector”)时,也会发生这种情况。
当xpath以/
开头时,Scrapy内部保留整个html并从文档根开始。这里详细解释:https://doc.scrapy.org/en/latest/topics/selectors.html#working-with-relative-xpaths