urljoin spider extractfirst example docs python scrapy

python - spider - Código de ejemplo para Scrapy process_links y process_request



scrapy spider (1)

Te refieres a scrapy.spiders.Rule que se usa con más frecuencia en scrapy.CrawlSpider

Hacen más o menos lo que dicen los nombres o, en otras palabras, que actúan como una especie de middleware entre el momento en que se extrae y procesa / descarga el enlace.

process_links encuentra entre el momento en que se extrae el enlace y se convierte en solicitud. Hay casos de uso muy interesantes para esto, solo por nombrar algunos comunes:

  1. Filtra algunos enlaces que no te gustan.
  2. Haga la redirección manualmente para evitar malas solicitudes.

ejemplo:

def process_links(self, link): for link in links: #1 if ''foo'' in link.text: continue # skip all links that have "foo" in their text yield link #2 link.url = link.url + ''/'' # fix url to avoid unnecessary redirection yield link

process_requests ubica entre la solicitud que se acaba de realizar y antes de que se descargue. Comparte algunos casos de uso con process_links pero puede hacer algunas cosas interesantes como:

  1. Modificar encabezados (por ejemplo, cookies).
  2. Cambie detalles como la devolución de llamada, dependiendo de algunas palabras clave en la url.

ejemplo:

def process_req(self, req): # 1 req = req.replace(headers={''Cookie'':''foobar''}) return req # 2 if ''foo'' in req.url: return req.replace(callback=self.parse_foo) elif ''bar'' in req.url: return req.replace(callback=self.parse_bar) return req

Probablemente no los uses a menudo, pero estos dos pueden ser accesos directos muy prácticos y fáciles en algunas ocasiones.

Soy nuevo en Scrapy y esperaba que alguien me diera buenos códigos de ejemplo cuando process_links y process_request son los más útiles. Veo que process_links se usa para filtrar URL pero no sé cómo codificarlo.

Gracias.