【发布时间】:2016-06-09 17:31:07
【问题描述】:
我将从我试图用来遍历车辆集合并提取模型和价格的 scrapy 代码开始:
def parse(self, response):
hxs = Selector(response)
split_url = response.url.split("/")
listings = hxs.xpath("//div[contains(@class,'listing-item')]")
for vehicle in listings:
item = Vehicle()
item['make'] = split_url[5]
item['price'] = vehicle.xpath("//div[contains(@class,'price')]/text()").extract()
item['description'] = vehicle.xpath("//div[contains(@class,'title-module')]/h2/a/text()").extract()
yield item
我希望循环遍历列表并仅返回正在解析的单个车辆的价格,但它实际上是将页面上所有价格的数组添加到每个车辆项目。
我认为问题出在我的 xpath 选择器中 - "//div[contains(@class,'price')]/text()" 以某种方式允许解析器查看应该每次解析的单个车辆之外的 div?
作为参考,如果我这样做 listings[1] 它只返回 1 个列表,因此循环应该可以工作。
编辑:我在上面添加了print vehicle.extract() 行,并确认vehicle 绝对只是一个项目(每次循环迭代时都会更改)。应用于车辆的 xpath 选择器如何能够逃脱车辆对象并返回所有价格?
【问题讨论】:
标签: python xpath scrapy scrapy-spider