簡體   English   中英

將額外的參數傳遞給scrapy.Request()

[英]Passing extra arguments to scrapy.Request()

實際上我想將與特定網站相關的所有數據(文本、hrefs、圖像)存儲到一個文件夾中。為了做到這一點,我需要將該文件夾的路徑傳遞給所有不同的解析函數。所以我想傳遞這個在scrapy.Request()作為額外 kwargs 的路徑,如下所示:

yield scrapy.Request(url=url,dont_filter=True, callback=self.parse,errback = self.errback_function,kwargs={'path': '/path/to_folder'})

但它給出了錯誤TypeError: __init__() got an unexpected keyword argument 'kwargs'

如何將該路徑傳遞給下一個函數?

對於任何可能需要它的人......

您可以使用這樣的meta參數傳遞額外的參數......

   yield scrapy.Request(url=url,dont_filter=True, 
callback=self.parse,errback = self.errback_function,  meta={'filepath': filepath})

更新:

Request.cb_kwargs是在 1.7 版中引入的。 在此之前,建議使用 Request.meta 來傳遞有關回調的信息。 在 1.7 之后,Request.cb_kwargs 成為處理用戶信息的首選方式,讓 Request.meta 用於與中間件和擴展等組件進行通信。

因此對於版本 >= 1.7 以下將起作用:

 request = scrapy.Request('http://www.example.com/index.html', callback=self.parse_page2, cb_kwargs=dict(main_url=response.url))

你可以參考這個文檔: https : //doc.scrapy.org/en/latest/topics/request-response.html#passing-additional-data-to-callback-functions

這是一個古老的話題,但對於任何需要它的人來說,要傳遞額外的參數,您必須使用cb_kwargs ,然后在 parse 方法中調用該參數。

你可以參考這部分文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM