亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node.js 爬蟲 異步延時問題

node.js 爬蟲 異步延時問題

汪汪一只貓 2018-10-01 22:18:56
比方說有1萬個關鍵詞['query1', 'query2' ... ... ]我要用這些關鍵詞爬蟲抓網上的數據,有兩個接口,一個是獲取當前query所有的頁數,一個是獲取當前query當前頁的數據。首先請求第一個接口拿到當前query有多少頁,然后再獲取每一次的數據每次請求必須等上一個請求完成,防止網站崩潰我用node寫的,請問有解決的辦法嗎?
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

我們有個服務比較類似。主要用到了隊列,隊列是基于redis實現的,大概原理如下:

  • 實現單個任務的功能

  • 任務A實現后將數據放到到隊列A中

  • 任務B從隊列A中消費數據,成功則刪除當前任務,失敗則重新存入,任務B完成后產生的數據存儲隊列B

  • 任務C從隊列B中消費數據,成功則刪除當前任務,失敗則重新存入,任務C完成后產生的數據存儲隊列C

這樣整個流程的任務唄拆分出來,業務邏輯也簡單化,方便維護,并且,任務ABC都是并行計算的,且相對隔離


查看完整回答
反對 回復 2018-10-14
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

這里面涉及到的技術點如下:

  1. 發出 HTTP 請求,用 http 模塊的 get 或者 request 函數;

  2. 分析請求到的頁面數據,假設頁面是 html 頁面,可以用 cheerio 來解析頁面的 DOM 結構,獲取頁面上的數據;

  3. 異步流程控制,因為 node.js 是單線程異步執行的,所以你如果兩個任務需要串行執行,需要進行流程控制;

  4. 流程控制可以自己實現,也可以用第三方庫來實現;

能想到的大概就是這些,歡迎大家補充。


查看完整回答
反對 回復 2018-10-14
  • 2 回答
  • 0 關注
  • 1152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號