Просканировано 100 страниц, но очищено 0 элементов - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь получить информацию о продукте: http://biancogres.com.br/produtos, и для каждого продукта мне нужно получить информацию об этом на соответствующей странице. Каждый селектор xpath был протестирован в Scrapy Shell, чтобы убедиться, что данные собираются правильно, однако данные вообще не удаляются. Код даже нумеруется правильно.

Вот код:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.http.request import Request
from scrapy.selector import Selector
from  biancospider.items import BiancospiderItem

class BiancoSpider(CrawlSpider):
    name = 'BiancoSpider'
    start_urls = ['https://www.biancogres.com.br/produtos/']
    allowed_domains = ["biancogres.com.br"]

    rules = (
        Rule(LinkExtractor(restrict_xpaths="//a[@class='next page-numbers']"), follow=True),
        Rule(LinkExtractor(allow=r"/produto/[-a-zA-Z]"), callback='parse_products')
    )

    def parse_products(self, response):

        sel = Selector(response)

        products = sel.xpath("//ul/li[contains(@class, 'product')]")
        items = []

        #productNames = sel.xpath("//ul/li[contains(@class, 'product')]/a/h2/text()").getall()
        #productImages = sel.xpath("//ul/li[contains(@class, 'product')]/a/img/@src").getall()
        #productURLs = sel.xpath("//ul/li[contains(@class, 'product')]/a/@href").getall()

        for product in products:
            item = BiancospiderItem()

            item['url'] = product.xpath("./a/@href").extract()
            item['nome'] = product.xpath("./a/h2/text()").extract()
            item['imagem'] = product.xpath("./a/img/@src").extract()

            items.append(item)

        for i in items:
            yield Request(i['url'], callback=self.parse_details)


    def parse_details(self, response):
        #if (len(response.xpath('//table[@id="variacoes"]//tr'))-1) > 1):  
        #response.xpath('//table[@id="variacoes"]//tr/td/text()').getall()
        sel = Selector(response)

        item = BiancospiderItem()

        item['tamanho'] = sel.xpath('//table[@id="variacoes"]//tr/td[1]/text()').get()
        item['categoria'] = sel.xpath('//table[@id="variacoes"]//tr/td[2]/text()').get()

        yield item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...