2015-12-20 38 views
13

chciałbym uzyskać taki sam wynik jak tego wiersza polecenia: scrapy crawl linkedin_anonymous -a = pierwszy James Bond -a ubiegłym = -o output.jsonPrzekazywanie argumentów do process.crawl w Scrapy pytona

mój skrypt jest taki, jak następuje:

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() 

okazało się, że process.crawl() w (1) tworzy inną LinkedInAnonymousSpider w którym pierwsze i ostatnie są brak (drukowane (2)), a jeśli tak, to nie ma sensu tworzenia obiektu pająka i jak można przekazać argumenty najpierw i jako ostatnie do process.crawl()?

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): . . . 

Odpowiedz

27

przekazać argumenty pająk na metodzie process.crawl:

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

Czy jest jakiś inny sposób ??? !!! –

+2

Ale w ten sposób nie możemy przekazać '-o output.json'? – hAcKnRoCk