第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

node.js 爬蟲 異步延時問題

node.js 爬蟲 異步延時問題

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

2 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

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

  • 實現(xiàn)單個任務的功能

  • 任務A實現(xiàn)后將數(shù)據(jù)放到到隊列A中

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

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

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


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

TA貢獻1836條經(jīng)驗 獲得超4個贊

這里面涉及到的技術(shù)點如下:

  1. 發(fā)出 HTTP 請求,用 http 模塊的 get 或者 request 函數(shù);

  2. 分析請求到的頁面數(shù)據(jù),假設(shè)頁面是 html 頁面,可以用 cheerio 來解析頁面的 DOM 結(jié)構(gòu),獲取頁面上的數(shù)據(jù);

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

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

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


查看完整回答
反對 回復 2018-10-14
  • 2 回答
  • 0 關(guān)注
  • 1149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號