2017-11-01 1 views
0

Meine Scrapy Spider ist bei Scrapinghub gehostet. Es wird über einen Run-Spider-API-Aufruf verwaltet. Das einzige, was sich bei Spider von Anruf zu Anruf ändert, ist eine Liste von Start-URLs. Die Liste kann zwischen 100 und tausend variieren. Was ist der beste Weg, Start-URLs in diesem Szenario zu aktualisieren? Von dem, was ich sehe, gibt es keine direkte Option in SH API dafür. Ich denke über das Aktualisieren von MySql mit einer Liste von URLs und einmal aktualisiert senden Sie einfach Run Job API-Aufruf. (Start-URLs werden aus der MySql-Tabelle generiert). Irgendwelche Kommentare zu einer solchen Lösung oder anderen Optionen?Update Start URLs auf scrapinghub gehosteten Scrapy-Projekt über API-Aufruf

Meine aktuelle Einstellung ist wie folgt.

def __init__(self, startUrls, *args, **kwargs): 

    self.keywords = ['sales','advertise','contact','about','policy','terms','feedback','support','faq'] 

    self.startUrls = startUrls 

    self.startUrls = json.loads(self.startUrls) 

    super(MySpider, self).__init__(*args, **kwargs) 

def start_requests(self): 

    for url in self.startUrls: 

     yield Request(url=url) 

Antwort

1

Sie können Parameter an Scrapy Spider übergeben und sie in Ihrer Spinne lesen.

Senden Sie eine Liste von URLs, die als JSON codiert sind, und dekodieren Sie sie.

class MySpider(scrapy.Spider): 

    def __init__(self, startUrls, *args, **kwargs): 

     self.startUrls = startUrls 

     self.startUrls = json.loads(self.startUrls) 

     super(MySpider, self).__init__(*args, **kwargs) 


    def start_requests(self): 

     for url in self.startUrls: 

      yield Request(url=url ...) 

Und hier ist, wie Sie diesen Parameter an Ihre Spinne senden.

curl -u APIKEY: https://app.scrapinghub.com/api/run.json -d project=PROJECT -d spider=SPIDER -d startUrls="JSON_ARRAY_OF_LINKS_HERE" 

Ihre scrapinghub.yml Datei sollte wie sein diese

projects: 
    default: 160868 
+0

Danke. Dies würde perfekt für eine Liste von 10 URLs funktionieren. Aber wie gehe ich mit 1000 URLs um? –

+0

Sie können so viele Daten "POST" wie Sie wollen ... keine Sorge ... – Umair

+0

Was sollten die Schlüssel in URLs Array sein? –

Verwandte Themen