Mi solución para ejecutar más de 200 arañas a la vez ha sido crear un comando personalizado para el proyecto. Consulte http://doc.scrapy.org/en/latest/topics/commands.html#custom-project-commands para obtener más información sobre la implementación de comandos personalizados.
YourProjectName/comandos/allcrawl.py:
from scrapy.command import ScrapyCommand
import urllib
import urllib2
from scrapy import log
class AllCrawlCommand(ScrapyCommand):
requires_project = True
default_settings = {'LOG_ENABLED': False}
def short_desc(self):
return "Schedule a run for all available spiders"
def run(self, args, opts):
url = 'http://localhost:6800/schedule.json'
for s in self.crawler.spiders.list():
values = {'project' : 'YOUR_PROJECT_NAME', 'spider' : s}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
log.msg(response)
Asegúrese de incluir lo siguiente en su settings.py
COMMANDS_MODULE = 'YOURPROJECTNAME.commands'
Entonces, desde la línea de comandos (en el directorio del proyecto) simplemente puede escribir
scrapy allcrawl
Genial, intentaré esto a primera hora de la mañana. No tengo computadora en este momento. Gracias por ayudar! – user1009453
Hola. Intenté su solución pero recibí el siguiente error de importación: error de importación: Ningún módulo llamado comandos Pongo la línea "COMMANDS_MODULE = 'YOURPROJECTNAME.commands'" en el archivo de configuración en el directorio del proyecto. ¿Es esto correcto? – user1009453
@ user1009453 Asegúrate de que tu carpeta de comandos tenga un '__init __. Py' – dru