urljoin scraping example español python scrapy web-crawler

python - scraping - Ejecutando arañas múltiples en scrapy



scrapy vs beautifulsoup (4)

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 (la versión de My 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 programar este programa python para que se ejecute con cronjob.

  1. En scrapy, por ejemplo, si tuviera dos URL que contengan HTML diferente. 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 programarlas para que se ejecuten cada 6 horas (pueden ser como trabajos cron)?

No tenía idea de lo de arriba, ¿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 de 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 de scrapy para que lo hagan al mismo tiempo:

scrapy runspider foo & scrapy runspider bar

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

Para programar 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

Los primeros * son minutos, luego horas, etc., y un asterisco es un comodín. Entonces esto dice ejecutar el script en cualquier momento donde las horas sean divisibles por 6 o cada seis horas.


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, configure LOG_FILE en su settings.py .

LOG_FILE = "logs/mylog.log"