Я собираю имена, адреса и количество автомобилей с веб-страницы, используя код ниже.
Тем не менее, время от времени число автомобилей равно нулю. Предположим в примере ниже, что восьмому дилеру возвращено нулевое количество автомобилей, поэтому возвращаемые списки выглядят примерно так:
Имена = a, b, c, d, e, f, g, h, i, j
address = aa, bb, cc, dd, ee, ff, gg, hh, ii, jj
автомобилей = 1,2,3,4,5,6,7,9,10
, где у дилера a по адресу aa есть 1 автомобиль, у дилера b по адресу bb - 2 автомобиля и т. Д., Но поскольку дилер h по адресу hh имеет нулевое значение автомобилей, он пропускается, и вместо этого код считает, что у дилера h 9 автомобилей и т. Д. у дилера i и адреса ii имеется 10 автомобилей, поэтому дилер j по адресу jj пропущен, поскольку список автомобилей исчерпан.
поэтому, где код возвращает нулевое значение автомобилей, как мне заменить его на 0? и поэтому в приведенном выше примере у дилера h и адреса hh будет 0 автомобилей, поэтому у дилера i по адресу ii будет 9, а у дилера j по адресу jj будет 10 автомобилей
import scrapy
from autotrader.items import AutotraderItem
class AutotraderSpider(scrapy.Spider):
name = "autotrader"
allowed_domains = ["autotrader.co.uk"]
start_urls = ["https://www.autotrader.co.uk/car-dealers/search?advertising-location=at_cars&postcode=m43aq&radius=1500&forSale=on&toOrder=on&sort=with-retailer-reviews&page=822"]
def parse(self, response):
for sel in response.xpath('//ul[@class="dealerList__container"]'):
names = sel.xpath('.//*[@itemprop="legalName"]/text() ').extract()
names = [name.strip() for name in names]
addresses = sel.xpath('.//li/article/a/div/p[@itemprop="address"]/text()').extract()
addresses = [address.strip() for address in addresses]
carss = sel.xpath('.//li/article/a/div/p[@class="dealerList__itemCount"]/span/text()').extract()
carss = [cars.strip() for cars in carss]
result = zip(names, addresses, carss)
for name, address, cars in result:
item = AutotraderItem()
item['name'] = name
item['address'] = address
item['cars'] = cars
yield item