我們在寫爬蟲的時候,經常會遇到這種情況,這裡舉例說明一下,比如爬乙個新聞頁面,首先爬的是新聞列表頁pagea,從pagea裡獲取新聞詳細頁連線,然後爬新聞詳情頁pageb,新聞詳情頁pageb裡有乙個關於這個新聞的解說,在另乙個頁面pagec。這時候如果用傳參的方法可以直接在爬取完成一條新聞的整個資訊以後再把資訊返回。
說明:
1、爬取列表資訊的方法funca
2、爬取新聞詳情資訊的funcb
3、爬取解說的funcc
def
parse
(self, response):
# collect `item_urls`
for item_url in item_urls:
yield request(url=item_url, callback=self.funca)
deffunca
(self, response):
item = myitem()
# 處理列表資料
yield request(url=item_details_url, meta=,
callback=self.funcb)
deffuncb
(self, response):
item = response.meta['item']
# 處理新聞詳情頁的資料
yield request(url=item_details_url, meta=,
callback=self.funcc)
deffuncc
(self, response):
item = response.meta['item']
# 處理新聞解說頁的資料
return item
注意:上面**只是說明用法
ps. 傳遞多個引數:
yield
request(url, meta=, callback=self.parse)
取出多個引數。如果不同url過來的加上判斷。(如針對分頁)
item = response.meta['item']
itemb = response.meta['itemb']
itemc = response.meta['itemc']
scrapy中request的指紋生成
if include headers include headers tuple to bytes h.lower for h in sorted include headers cache fingerprint cache.setdefault request,if include header...
Scrapy中的Request和日誌分析
自動去重,根據url的雜湊值,進行去重 屬性meta dict 在不同的請求之間傳遞資料,dict priority int 此請求的優先順序 預設為0 dont filter boolean 關閉自動去重 errback callable 在處理請求時引發任何異常時將呼叫的函式 flags lis...
Request 物件之QueryString集合
querystring集合檢索 http 查詢字串中變數的值。http 查詢字串由問號 後的值指定。幾個不同的程序都可以生成查詢字串。如,anchor 標記 string sample 生成值為 this is a sample 的變數名字串。通過傳送 或由使用者在其瀏覽器的位址框中鍵入查詢也可以生...