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.
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.
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.
Debería usar scrapyd para manejar múltiples crawler http://doc.scrapy.org/en/latest/topics/scrapyd.html
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"