2016-05-02 3 views
0

Ich muss mehrere Python-Skripts ausführen, einige davon sind Scrapy-Projekte.Run scrapy mit Subprozess

Um eine Spinne zu laufen Ich versuche dies:

from subprocess import call 
import subprocess 

call(["scrapy",'crawl','my_spider','-o output_file.csv'],cwd='/home/luis/Schreibtisch/kukun/bbb_new_pro/scripts/2_Get_links) 

Ich frage mich, ob posible ist die Ausgabe des Dateiverzeichnis angeben, ich dies versucht:

call(["scrapy",'crawl','my_spider','-o folder_1/folder_2/output_file.csv'],cwd='project_folder') 

Aber das schafft nur neue Ordner unter Das Projektverzeichnis Ich möchte die Datei außerhalb des Ordners.

Die andere Sache ist, kann ich den Namen der Ausgabedatei in einer Variablen angeben? so etwas wie:

file_name = 'output file.csv' 

call(["scrapy",'crawl','my_spider','-o + file_name '],cwd='project_folder') 
+0

add '/' zu Beginn des Ausgabeordner – eLRuLL

+0

@eLRuLL ich auch versuchen, nicht funktioniert hat. –

+0

Wie @eLRull vorschlägt, "call ([" scrapy ", 'crawl', 'my_spider', '- o /absolute/path/to/folder_1/folder_2/output_file.csv'], cwd = 'project_folder') 'sollte Arbeit. Für den anderen Fall "call" (["scrapy", "crawl", "my_spider", "- o% s"% dateiname], cwd = 'project_folder') ist das, was Sie wollen. Beachten Sie, dass das Ausführen von Spidern aus einem Skript nicht der empfohlene Weg ist. lesen Sie dazu den Abschnitt [docs über die Verwendung von CrawlProcess] (http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script) –

Antwort

1

Das ist für mich gearbeitet:

from subprocess import call 

name = "spider_name" 
call(["scrapy", "crawl", "{0}".format(name), "-o {0}.json".format(name)])