作數據分析和可視化工做,最重要的一點就是數據抓取工做,以前使用Java和python都作過簡單的數據抓取,感受用的很不順手。node
後來用nodejs發現很是不錯,經過js就能夠進行數據抓取工做,相似jquery的方法進行數據分析和抽取,最關鍵的是,不用編譯就能夠放上去跑,可以快速應對網站變化。可是他的所有異步模式也是帶來不少問題:python
1 async function main() { 2 var urls = []; 3 for (var i = 0; i <= 34; i++) { 4 console.info("當前頁數:"+i); 5 //從原始網址獲取數據 6 var myurl = "https://www.cnblogs.org/"+i+".json?b3831331f475fdcb13df"; 7 //同步,這纔是最重要的 8 var body = await request.get(myurl); 9 var datas = JSON.parse(body); 10 //循環獲取到的結果 11 for (var j = 0; j < datas.length; j++) { 12 var content = datas[j]; 13 var options = { 14 method: 'POST', 15 uri: 'http://localhost:8080/save.do', 16 form: { 17 id: 1, 18 }, 19 headers: { 20 /* 'content-type': 'application/x-www-form-urlencoded' */ // Set automatically 21 } 22 }; 23 try { 24 //同步,把數據發送到另外一個網址上,保存 25 let result = await request.post(options); 26 } catch (e) { 27 28 } 29 //休眠5秒,避免太頻繁被幹掉,或者隨機一個時間 30 await sleep(5000); 31 } 32 } 33 } 34 main();
運行的時候,是用 node --harmony-async-await app.js的方式啓動就能夠了。注意node使用v7之上的版本,最新爲7.5.0。jquery