我面臨與parse_node
方法中的一些問題Scrapy:Scrapy parse_node()到底需要3個參數(2給出)
class s1(scrapy.spiders.XMLFeedSpider):
name = "s1"
handle_httpstatus_list = [400,401,403,404,408,410,500,502,503,504]
allowed_domains = ["xxx"]
start_urls = ["xxx"]
main_url = start_urls[0]
jobs_list = []
tracker = SummaryTracker()
itertag = "miojob"
counter = 0
def parse_node(self, response, node):
if response.status in [400,401,403,404,408,410,500,502,503,504]:
time.sleep(60)
yield scrapy.Request(self.main_url, callback=self.parse_node, errback=self.err1, dont_filter = True)
else:
#Some Code #
yield scrapy.Request(self.main_url, callback=self.parse_node, errback=self.err1, dont_filter = True)
這是一個scrapy-BOT是遞歸刮同一頁面的部分提取最後十個項目。一切正常,除了最後scrapy.Request
,因爲它給了我這個錯誤: 「parse_node()到底需要3個參數(2給出)」 相反,如果我用一個簡單Request(self.main_url)
它的工作原理,但我不能使用errback可因爲它需要回調。我試圖通過額外的參數parse_node
這樣的:
yield scrapy.Request(self.main_url, callback=self.parse_node(arg1,arg2), errback=self.err1, dont_filter = True)
,但它給了我一個斷言錯誤,可能是因爲論據是錯誤的?
你有什麼想法如何解決這個問題?通過正確的參數parse_node
,我也可以使用errback callable。
回調方法應該只包含2個參數'self'和'response',所以刪除'node' – eLRuLL
@eLRuLL如果我從parse_node中刪除節點會引發類似於舊的錯誤! – 0cN