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.

Scrapy – CrawlSpider no está ejecutando mi función de retorno.

He creado una araña para recopilar nombres de usuario en scratch.mit.edu.
Logra navegar con éxito a las páginas de perfil, pero no ejecuta la función de devolución de llamada. Creo que podría tener algo que ver con la forma en que escribo mi atributo allow.

Mi código:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class ForumnSpider(CrawlSpider):
    name = 'forumn'
    alloweddomains = ['scratch.mit.edu']
    starturls = [
        'https://scratch.mit.edu/users/accountcraft123/'
    ]

rules = (
    Rule(
        LinkExtractor(),
    ),
    Rule(
        LinkExtractor(
            allow=('/users/'),
        ),
        callback='parse_item',
    ),
)

def parse_item(self, response):
    self.logger.info('Esta es una página de perfil. %s', response.url)
    response.xpath('//div[@class="header-text"]/h2/text()').get()


Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en el atributo allow de su regla LinkExtractor. Intente cambiarlo por allow = ('/users/.+') para asegurarse de que esté coincidiendo con todas las páginas de perfil.

Comments are closed.