2015-12-20 15 views
13

process.crawl würde Ich mag das gleiche Ergebnis wie diese Befehlszeile erhalten: scrapy kriecht linkedin_anonymous -a erster = James -a liest = Bond -o output.jsonPassing Argumente in Scrapy Python

Mein Skript wie folgt:

import scrapy 
from linkedin_anonymous_spider import LinkedInAnonymousSpider 
from scrapy.crawler import CrawlerProcess 
from scrapy.utils.project import get_project_settings 

spider = LinkedInAnonymousSpider(None, "James", "Bond") 
process = CrawlerProcess(get_project_settings()) 
process.crawl(spider) ## <-------------- (1) 
process.start() 

ich diesen process.crawl fand heraus() in (1) eine weitere LinkedInAnonymousSpider schafft, wo erste und letzte None sind (gedruckt in (2)), wenn dem so ist, dann ist kein Punkt gibt es der Erstellung der Objektspinne und wie ist es möglich, die Argumente zuerst und zuletzt process.crawl() übergeben?

linkedin_anonymous:

from logging import INFO 

import scrapy 

class LinkedInAnonymousSpider(scrapy.Spider): 
    name = "linkedin_anonymous" 
    allowed_domains = ["linkedin.com"] 
    start_urls = [] 

    base_url = "https://www.linkedin.com/pub/dir/?first=%s&last=%s&search=Search" 

    def __init__(self, input = None, first= None, last=None): 
     self.input = input # source file name 
     self.first = first 
     self.last = last 

    def start_requests(self): 
     print self.first ## <------------- (2) 
     if self.first and self.last: # taking input from command line parameters 
       url = self.base_url % (self.first, self.last) 
       yield self.make_requests_from_url(url) 

    def parse(self, response): . . . 

Antwort

27

die Spinne Argumente auf der process.crawl Methode übergeben:

process.crawl(spider, input='inputargument', first='James', last='Bond') 
+1

Gibt es eine andere Art und Weise ??? !!! –

+2

Aber auf diese Weise können wir nicht "-o output.json" weitergeben? – hAcKnRoCk