如何获取此页面中每个广告的数据?

时间:2017-04-29 18:42:07

标签: python xpath scrapy scrapy-spider scrapy-shell

我正在抓取此页面以获取每个广告的数据: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个月

根据页面上的广告!有什么建议吗?

1 个答案:

答案 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