Estoy usando scrapy-splash para rastrear este sitio web y la araña está dando "[retorcido] CRÍTICO: error no manejado en diferido:"

Probé todo en el desbordamiento de pila y otros sitios web

Código de mi araña

class DarazspidySpider(scrapy.Spider):
    name = 'darazspidy'

    def start_requests(self):
        url = 'https://www.daraz.pk/smartphones/'
        SplashRequest(url=url, callback=self.parse, 
     endpoint='render.html', args={'wait': 0.5})

    def parse(self, response):
        for phone in response.xpath('//div[@class="c5TXIP"]'):
            yield {
            'Name',
            phone.xpath('.//*[contains(concat( " ", @class, " " ), concat( " ", "c16H9d", " " ))]//a').extract(),
            'price',
            phone.xpath('.//*[contains(concat( " ", @class, " " ), concat( " ", "c13VH6", " " ))]').extract(),
        }
0
Ibtsam Ch 1 oct. 2019 a las 22:54

1 respuesta

La mejor respuesta

Estás produciendo un conjunto, no un diccionario. ¿Puedes intentar producir un diccionario en su lugar?

La creación de su conjunto fallará porque no puede agregar listas a un conjunto.

Pruebe algo como esto en su lugar:

def parse(self, response):
        for phone in response.xpath('//div'):
            yield {
            'Name': phone.xpath('.//*[contains(concat( " ", @class, " " ), concat( " ", "c16H9d", " " ))]//a').extract(),
            'price': phone.xpath('.//*[contains(concat( " ", @class, " " ), concat( " ", "c13VH6", " " ))]').extract(),
        }

Probablemente también deba entregar su solicitud de presentación

yield SplashRequest(url=url, callback=self.parse, 
     endpoint='render.html', args={'wait': 0.5})
1
Guillaume 1 oct. 2019 a las 21:34