Я зарегистрировался scrapy shell
, и кажется, что есть некоторые блоки без необходимой информации. Проверьте эти результаты:
In [2]: len(response.xpath("//div[contains(@class, '-gallery')]").extract())
Out[2]: 48
In [3]: len(response.xpath("//div[contains(@class, '-gallery')]//span[contains(@class, 'brand')]").extract())
Out[3]: 40
Таким образом, есть 48 блоков, но только 40 из них действительны.
Поэтому я предлагаю провести небольшую проверку необходимых данных в цикле for
(например, проверить название или марку), а если их нет, просто continue
.