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

白板的微信
TA貢獻1883條經驗 獲得超3個贊
我們有個服務比較類似。主要用到了隊列,隊列是基于redis實現的,大概原理如下:
實現單個任務的功能
任務A實現后將數據放到到隊列A中
任務B從隊列A中消費數據,成功則刪除當前任務,失敗則重新存入,任務B完成后產生的數據存儲隊列B
任務C從隊列B中消費數據,成功則刪除當前任務,失敗則重新存入,任務C完成后產生的數據存儲隊列C
這樣整個流程的任務唄拆分出來,業務邏輯也簡單化,方便維護,并且,任務ABC都是并行計算的,且相對隔離

HUH函數
TA貢獻1836條經驗 獲得超4個贊
這里面涉及到的技術點如下:
發出 HTTP 請求,用 http 模塊的 get 或者 request 函數;
分析請求到的頁面數據,假設頁面是 html 頁面,可以用 cheerio 來解析頁面的 DOM 結構,獲取頁面上的數據;
異步流程控制,因為 node.js 是單線程異步執行的,所以你如果兩個任務需要串行執行,需要進行流程控制;
流程控制可以自己實現,也可以用第三方庫來實現;
能想到的大概就是這些,歡迎大家補充。
添加回答
舉報
0/150
提交
取消