cities = ['LED', 'KUL', 'MOW']
sp = AirwaySpider(cities)
給出了錯誤傳遞參數給蜘蛛__init__
sp = AirwaySpider(cities)
TypeError: __init__() takes exactly 1 argument (2 given)
從AirwaySpider代碼:
class AirwaySpider(scrapy.Spider):
def __init__(self, **kw):
super(AirwaySpider, self).__init__(**kw)
cities = kw
,而這會工作
sp = AirwaySpider(domain="sdf")
我明白了「自我「是爲了,在C++中是什麼**,不知道這個符號在python中意味着什麼,以及爲什麼我不能通過dict的列表(字典在我從中獲取代碼的示例中傳遞)是可以的。
UPDATE:
如果我修改代碼,通過它的工作原理第一原始單一的說法,但隨後在框架後失敗:
class AirwaySpider(scrapy.Spider):
def __init__(self, kw):
super(AirwaySpider, self).__init__(kw)
錯誤
File "airway.py", line 13, in <module>
process.crawl(sp)
...
File "c:\python27\lib\site-packages\scrapy\crawler.py", line 80, in _create_spider
return self.spidercls.from_crawler(self, *args, **kwargs)
File "c:\python27\lib\site-packages\scrapy\spiders\__init__.py", line 50, in from_crawler
spider = cls(*args, **kwargs)
exceptions.TypeError: __init__() takes exactly 2 arguments (1 given)
2015-12-16 15:57:29 [twisted] CRITICAL: