Мне кажется, проблема в том, что вы не указываете callback
в своем запросе на нумерацию страниц. Укажите функцию parse
в качестве обратного вызова, и это должно работать. пожалуйста, прокомментируйте, если это все еще не работает.
Редактировать:
В этом случае я чувствую, что ваша логика c нуждается в капитальном ремонте. Я предлагаю разделить логин и нумерацию страниц. Попробуйте следующее:
def parse(self, response):
self.extract_item(response)
next_page_urls = response.xpath('//*[@class="pagesCount"] [1]//@href').getall()
if next_page_urls is not None:
for url in next_page_urls:
yield scrapy.Request(response.urljoin(url), callback=self.extract_item)
def extract_item(self, response):
for product in response.xpath('//div[@class="catalog-item"]'):
yield {
# 'name': product.xpath('.//span[@itemprop="name" and contains(text(), "Levenhuk")]/text()').get(),
'name': product.xpath('.//span[@itemprop="name"]/text()').get(),
# 'price': product.xpath('.//div[@class="price"]/span/text()').get(),
'price': product.xpath('.//span[@itemprop="price"]/text()').re_first(r'[0-9]+,[0-9]+'),
'short_discr': product.xpath('.//div[@class="opis-item"]/p/strong/text()').get()
}
, поэтому теперь функция parse
обрабатывает разбиение на страницы, а функция extract_item
извлекает элементы для каждой страницы.
Изменяет allowed_domains
, а также задает Pasindu .