Estoy tratando de pasar un argumento definido por el usuario a una araña de scrapy. ¿Alguien puede sugerir cómo hacer eso?
Leí sobre un parámetro en -a
alguna parte, pero no tengo idea de cómo usarlo.
python
scrapy
web-crawler
L Lawliet
fuente
fuente
self.domain
, todavía no puedo acceder a él fuera del__init__
método. Python arroja un error no definido. Por cierto, ¿por qué omitiste lasuper
llamada? PD. Estoy trabajando con la clase CrawlSpider__init__
es un método de la clase araña. Su implementación no hace que la araña sea menos robusta y se incluye en la respuesta para mostrar que puede declarar valores predeterminados para los argumentos de palabras clave, pero como dijo, es opcional. Como señalamos el año pasado, no necesita usargetattr
, solo puede acceder a los argumentos como atributos, por ejemplo,self.category
o como vemos en la respuestaself.domain
Las respuestas anteriores eran correctas, pero no tiene que declarar el constructor (
__init__
) cada vez que quiera codificar una araña de scrapy, simplemente puede especificar los parámetros como antes:y en su código de araña puede usarlos como argumentos de araña:
Y simplemente funciona.
fuente
Para pasar argumentos con el comando de rastreo
Para pasar argumentos para que se ejecuten en scrapyd, reemplace -a con -d
La araña recibirá argumentos en su constructor.
Scrapy pone todos los argumentos como atributos de araña y puede omitir el método init por completo. Tenga cuidado con el método getattr para obtener esos atributos para que su código no se rompa.
fuente
Los argumentos Spider se pasan mientras se ejecuta el comando crawl usando la opción -a. Por ejemplo, si quiero pasar un nombre de dominio como argumento a mi araña, haré esto-
Y recibe argumentos en los constructores de spider:
...
funcionará :)
fuente
Alternativamente, podemos usar ScrapyD que expone una API donde podemos pasar el start_url y el nombre de la araña. ScrapyD tiene api para detener / iniciar / estado / listar las arañas.
scrapyd-deploy
desplegará la araña en forma de huevo en el demonio e incluso mantendrá la versión de la araña. Al iniciar la araña, puede mencionar qué versión de la araña usar.curl http://localhost:6800/schedule.json -d project=default -d spider=testspider -d start_urls="https://www.anyurl...|https://www.anyurl2"
La ventaja adicional es que puede crear su propia interfaz de usuario para aceptar la URL y otros parámetros del usuario y programar una tarea utilizando la API de programación eliminada anterior
Consulte la documentación de la API scrapyd para obtener más detalles
fuente