scrapy 2.3 向回調函數傳遞附加數據

2021-06-09 13:50 更新

請求的回調是一個函數,在下載請求的響應時將調用該函數。將使用下載的 ?Response? 對象作為其第一個參數。

例子::

def parse_page1(self, response):
    return scrapy.Request("http://www.example.com/some_page.html",
                          callback=self.parse_page2)

def parse_page2(self, response):
    # this would log http://www.example.com/some_page.html
    self.logger.info("Visited %s", response.url)

在某些情況下,您可能對向這些回調函數傳遞參數感興趣,以便稍后在第二個回調中接收這些參數。下面的示例演示如何通過使用 ?Request.cb_kwargs? 屬性:

def parse(self, response):
    request = scrapy.Request('http://www.example.com/index.html',
                             callback=self.parse_page2,
                             cb_kwargs=dict(main_url=response.url))
    request.cb_kwargs['foo'] = 'bar'  # add more arguments for the callback
    yield request

def parse_page2(self, response, main_url, foo):
    yield dict(
        main_url=main_url,
        other_url=response.url,
        foo=foo,
    )

警告

?Request.cb_kwargs? 在版本中引入 ?1.7? . 在此之前,使用 ?Request.meta? 建議在回調時傳遞信息。后 ?1.7? , ?Request.cb_kwargs? 成為處理用戶信息的首選方式,離開 ?Request.meta? 用于與中間件和擴展等組件通信。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號