2015-02-16 10 views
5

Sto provando a creare un'applicazione utilizzando Flask e Scrapy. Devo passare lo list degli URL allo spider. Ho provato ad utilizzare la seguente sintassi:Passing list come argomenti in Scrapy

__init__: in Spider 
self.start_urls = ["http://www.google.com/patents/" + x for x in u] 

Flask Method 
u = ["US6249832", "US20120095946"] 
os.system("rm static/s.json; scrapy crawl patents -d u=%s -o static/s.json" % u) 

So cosa simile può essere fatto da file con gli URL richiesti lettura, ma posso passare elenco di URL per la scansione?

risposta

5

__init__() metodo di sostituzione del ragno:

class MySpider(Spider): 
    name = 'my_spider'  

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

     endpoints = kwargs.get('start_urls').split(',') 
     self.start_urls = ["http://www.google.com/patents/" + x for x in endpoints] 

e passare l'elenco degli endpoint attraverso la linea di ragionamento -a di comando:

scrapy crawl patents -a start_urls="US6249832,US20120095946" -o static/s.json 

Vedi anche:


noti che è possibile anche corsa Scrapy dallo script:

+0

Questo appare come una soluzione molto promettente, questo non richiede nemmeno l'archiviazione numeri di brevetto in una lista. Grazie. –