所見即所得-基於Node.js的頁面數據實踐


內容來源:2017年2月25日,懂球帝高級開發工程師鄧佳龍在「HTML5夢工場 & 微軟開發者沙龍第01期 -「再說 「JS 一統江湖」」」進行《所見即所得-基於Node.js的頁面數據實踐》演講分享。IT 大咖說(微信ID:itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。前端

閱讀字數:1424 | 4分鐘閱讀數據庫

嘉賓演講視頻回顧及PPT連接: t.cn/RnLosMH

摘要

數據抓取是企業信息化的根基和第一步,只有利用先進的技術做好了信息抓取工做,才能爲信息化帶來最大的價值。懂球帝高級開發工程師鄧佳龍用五個字就歸納了數據抓取的精髓。緩存

我眼中的數據抓取

數據抓取,通俗叫法是「爬蟲」。就是把非結構化的信息數據從網頁中抓取出來,保存到結構化的數據庫的過程。微信

能在頁面上看到的數據就是能獲得的數據,這就是我所說的「所見即所得」這五個字的含義。cookie

數據抓取技術能夠經過不少後臺語言實現,好比PHP、JAVA等等,可是Node.js有它獨特的優點。前端工程師

知己知彼,百戰不殆。數據抓取也有惡意攻擊網站或盜取數據的狀況。做爲前端工程師,只有當你知作別人是如何抓取的時候,才能想辦法去作防守。併發

頁面抓取的三個步驟

一、獲取數據。異步

二、從網頁中提取並清洗出所需的數據。工具

三、落入存儲當中。網站

使用Node.js進行數據抓取的優點

Node.js的無阻塞和事件驅動這兩個特性能夠大大提高抓取效率。

由於Javascript是一門前端語言,因此用它來作數據的提取和清洗有很大優點。

Node.js最近幾年的社區活躍度比較高,能夠用的工具和包也不少。

有一些數據會隱藏在JS腳本中,只能用Javascript來抓取。

案例分享——抓取球探足球數據

在球探足球的官網上有一些關於賽事比分的應用,若是這些數據要小編人工錄入,至少要三個月。有了數據抓取技術,就變得很便捷高效。

首先抓取賽事數據,而後落地球隊數據,再落地球員數據,根據賽事數據能夠獲取到賽程、比賽、賠率等數據。

足球裏的賽程、賠率等信息都是很是重要的,而咱們利用數據抓取技術能夠輕易得到。

曾經填過的「坑」

有些網頁若是用一些常規的數據請求方式不帶useragent信息是沒法正常訪問的。因此在作數據抓取的時候最好帶上useragent。

有些頁面上的數據接口必須在頭部中聲明特定的referer才能獲取數據。

部分網頁和數據接口會有訪問頻次限制。我建議你們下降訪問頻次,不要過於規律。

一些網頁和數據接口會出現轉碼問題。

有的網頁和數據接口須要身份驗證才能訪問。那麼就須要先作一個模擬登陸,把一些cookie信息緩存下來,獲取數據的時候再帶上這些cookie信息。

獲取數據異常狀態須要兼容性處理和必定的重試機制。針對不一樣的網站機制也有所不一樣。

目標網站改版時須要必定的預警機制。

分享幾個有用的包

Request——主要是用來獲取數據。

Cheerio——用於轉換和數據提取。

Co——把異步轉化爲同步的方式來寫。

Async——作併發流程控制。

Mongoose——主要用於操縱MongoDB。

Sequelize——主要用於操縱MySQL。

Log4js——作日誌記錄。

Pm2——守護進程。

Icony-lito——轉換代碼。

今天就分享到這裏,謝謝你們!

相關文章
相關標籤/搜索