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()
davy.ai
Parece que el problema podría estar en el atributo
allow
de su reglaLinkExtractor
. Intente cambiarlo porallow = ('/users/.+')
para asegurarse de que esté coincidiendo con todas las páginas de perfil.