Ejecución de arañas múltiples en scrapy

  1. En scrapy, por ejemplo, si tuviera dos URL que contienen diferentes HTML. Ahora quiero escribir dos arañas individuales para cada una y quiero ejecutar ambas arañas a la vez. En scrapy es posible ejecutar múltiples arañas a la vez.

  2. En scrapy después de escribir varias arañas, ¿cómo podemos progtwigr que se ejecuten cada 6 horas (puede ser como trabajos de cron)?

No tenía idea de lo anterior, ¿me pueden sugerir cómo realizar las cosas anteriores con un ejemplo?

Gracias por adelantado.

Probablemente sería más fácil ejecutar dos scripts scrapy a la vez desde el nivel del sistema operativo. Ambos deberían poder guardar en la misma base de datos. Cree un script de shell para llamar a ambos scripts scrapy para que los hagan al mismo tiempo:

scrapy runspider foo & scrapy runspider bar 

Asegúrese de hacer este script ejecutable con chmod +x script_name

Para progtwigr un cronjob cada 6 horas, escriba crontab -e en su terminal y edite el archivo de la siguiente manera:

 * */6 * * * path/to/shell/script_name >> path/to/file.log 

El primero * es minutos, luego horas, etc., y un asterisco es un comodín. Así que esto dice ejecutar el script en cualquier momento en que las horas sean divisibles entre 6 o cada seis horas.

Debería usar scrapyd para manejar múltiples rastreadores http://doc.scrapy.org/en/latest/topics/scrapyd.html

Puedes intentar usar CrawlerProcess

 from scrapy.utils.project import get_project_settings from scrapy.crawler import CrawlerProcess from myproject.spiders import spider1, spider2 1Spider = spider1.1Spider() 2Spider = spider2.2Spider() process = CrawlerProcess(get_project_settings()) process.crawl(1Spider) process.crawl(2Spider) process.start() 

Si desea ver el registro completo del rastreo, establezca LOG_FILE en su settings.py .

 LOG_FILE = "logs/mylog.log" 

Aquí el código que te permite ejecutar múltiples arañas en scrapy. Guarde este código en el mismo directorio con scrapy.cfg (Mi versión de scrapy es 1.3.3 y funciona):

 from scrapy.utils.project import get_project_settings from scrapy.crawler import CrawlerProcess setting = get_project_settings() process = CrawlerProcess(setting) for spider_name in process.spiders.list(): print ("Running spider %s" % (spider_name)) process.crawl(spider_name,query="dvh") #query dvh is custom argument used in your scrapy process.start() 

y luego puedes progtwigr este progtwig de Python para que se ejecute con cronjob.