2016-04-21 33 views
1

我想在我的_init_方法中使用一個參數「term」。如您所見,當_init方法獲取此參數時,我想將其用作數據庫集合的名稱並向其中插入數據。但我不知道如何在整個班級中使用_initterm的值。那麼,有沒有人有好的建議來處理這個問題?如何在其他方法中使用「_init_」參數?

class EPGDspider(scrapy.Spider): 
     name = "EPGD" 
     allowed_domains = ["epgd.biosino.org"] 

    db = DB_Con() 
    collection = db.getcollection(term) 

    def __init__(self, term=None, *args, **kwargs): 
     super(EPGDspider, self).__init__(*args, **kwargs) 
     self.start_urls = ['http://epgd.biosino.org/EPGD/search/textsearch.jsp?textquery=%s&submit=Feeling+Lucky' % term] 

    def parse(self, response): 
     sel = Selector(response) 
     sites = sel.xpath('//tr[@class="odd"]|//tr[@class="even"]') 
     url_list = [] 
     base_url = "http://epgd.biosino.org/EPGD" 

     for site in sites: 
      item = EPGD() 
      item['description'] = map(unicode.strip, site.xpath('td[6]/text()').extract()) 
      self.collection.update({"genID": item['genID']}, dict(item), upsert=True) 
      yield item 
+0

之前作文課,你應該閱讀和研究至少[Python的教程:

def __init__(self, term=None, *args, **kwargs): super(EPGDspider, self).__init__(*args, **kwargs) self.term = term # ... 

然後,在其他方法使用self.term參考](https://docs.python.org/2/tutorial/classes.html)。 – Cyb3rFly3r

回答

4

使它成爲instance variable

def parse(self, response): 
    print(self.term) 
    # ... 
+0

感謝您的幫助! –

相關問題