es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sin salida con Scrapy

Soy bastante nuevo usando scrapy y quiero hacer scraping a un sitio web ‘https://in.seamsfriendly.com/collections/shorts’
He escrito el código pero está dando errores de traceback, por favor ayúdame con esto.

import scrapy
from ..items import SeamsfriendlyItem

class SeamsSpider(scrapy.Spider):
    name = 'seams'
    start_urls = [
        'https://in.seamsfriendly.com/collections/shorts'
        ]

def parse(self, response):
    title : response.css("#shopify-section-collection-template a::text").extract()
    price : response.css(".Price::text").extract()
    url : response.css("img::attr(data-src)").extract()

    yield {
        'title' : title,
        'price' : price,
        'url' : url
    }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que los errores de “traceback” no se mencionan en la pregunta. Sin embargo, hay un par de problemas en el código que necesitan ser corregidos:

    1. La asignación de variables debe usar el operador = en lugar del operador : en title : response.css(""#shopify-section-collection-template a::text").extract(). La declaración correcta debería ser title = response.css("#shopify-section-collection-template a::text").extract().
    2. La instrucción yield debe estar dentro del bucle for que extrae los datos del sitio web. Por lo tanto, debe estar dentro del bucle for después de las tres declaraciones de asignación.

    El código modificado debería lucir algo así:

    import scrapy
    
    class SeamsSpider(scrapy.Spider):
        name = 'seams'
        start_urls = [
            'https://in.seamsfriendly.com/collections/shorts'
            ]
    
        def parse(self, response):
    
            all_div_shorts = response.css('div.Grid__Cell 1/2--phone 1/2--tablet-and-up 1/3--desk')
            for shorts in all_div_shorts:
                title = shorts.css("#shopify-section-collection-template a::text").extract()
                price = shorts.css(".Price::text").extract()
                url = shorts.css("img::attr(data-src)").extract()
    
                yield {
                    'title' : title,
                    'price' : price,
                    'url' : url
                }
    

    Intenta ejecutar este código modificado y verifica si resuelve tus problemas. Si no, proporciona los errores de “traceback” para obtener más ayuda.

Comments are closed.