Начну с кодом Scrapy Я пытаюсь использовать для перебора коллекции автомобилей и извлечь модель и цену:Scrapy loop - xpath selector escaping object применяется и возвращает все записи?
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()"
, что-то позволяющее синтаксическому анализатору смотреть на divs вне единственного транспортного средства, которое должно обрабатываться каждый раз?
Для справки, если я делаю listings[1]
, он возвращает только 1 листинг, поэтому цикл должен работать.
Редактировать: Я добавил строку print vehicle.extract()
выше и подтвердил, что vehicle
определенно является единственным элементом (и он изменяется каждый раз, когда цикл повторяется). Каким образом селектор xpath применяется к транспортному средству, способному покинуть объект транспортного средства и вернуть все цены?