2012-06-08 23 views
7
  1. En scrapy, por ejemplo, si tenía dos URL que contienen 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.Ejecución de arañas múltiples en scrapy

  2. En scrapy después de escribir varias arañas, ¿cómo podemos programar para funcionar por cada 6 horas (puede ser como trabajos de cron)

no tenía ni idea de por encima de, u puede sugerir cómo realiza las cosas anteriores con un ejemplo.

Gracias de antemano.

Respuesta

2

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. Crear un script de shell para llamar a los dos guiones Scrapy hacerlas al mismo tiempo:

scrapy runspider foo & 
scrapy runspider bar 

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

Para programar una tarea programada cada 6 horas, el tipo crontab -e en su terminal y editar el archivo de la siguiente manera:

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

* la primera es 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.

+0

Muchas gracias por su respuesta, no importa, le estoy pidiendo esto, ¿puede dar un código de ejemplo para esto, de modo que sea más de ayuda, y lo logre aún más –

1

Usted puede 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, establecer LOG_FILE en su settings.py.

LOG_FILE = "logs/mylog.log" 
+0

Gracias, funciona bien. – VAdaihiep

0

Aquí el código que le permite ejecutar varias arañas en scrapy. Guarde este código en el mismo directorio con scrapy.cfg (Mi versión es scrapy 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 se puede programar este programa Python para funcionar con tarea programada.

Cuestiones relacionadas