最近一直沒更新了誒,由於學習Backbone好頭痛,別問我爲何不繼續AngularJs~由於2.0要出來了啊,媽蛋!好,言歸正傳,最近幫個人好基友扒數據,他說要一些股票債券的數據。我一聽,那不就是要作爬蟲了麼...果斷用Node作!(其實也有一個股票數據API,sina提供的,可是因爲不適用於債券,沒辦法,只好本身動手豐衣足食了)html
工欲善其事,必先利其器嘛,蓬勃的Node社區提供了很是多的好的工具,下面我列出將要使用的工具:node
此次,由於是一個入門教程,涉及到的東西固然也就很少。好比對時間格式化的moment插件,還有對傻(嗶!)的GBK和gb2312編碼解碼的插件iconv-lite,這些都是很是好的東西,能夠幫助你們更快更舒服的構建本身所須要的東西。因此就要求如何更快的學習閱讀API。(固然英文要好啊擦!)npm
首先就是經過npm加載node_modules,你能夠一個個加載(npm install request),也能夠在npm的package.json裏的dependencies一次性npm install加載。相信你們都已經耳熟能詳啦,就再也不贅述啦!(不知道的趕忙去補啊擦)json
而後咱們的爬蟲之旅就開始了,首先,固然就是各類require。數組
而後指定一個URL,供request去發送請求。就像下面同樣,這是一個異步的函數,回調函數的三個參數固然很好理解啦。異步
重點是在body上,body是將整個url的html文檔解析並存入body中。若是用http.on("data"),可麻煩啦。這下可好,已經幫你封裝穩當。當咱們有一個DOM文檔,最想幹的事情固然就是,操做DOM啊!這時cheerio就派上場了,它能夠像jQuery通常操做文檔。咱們來看一下,怎麼作的。函數
是否是十分的簡單易懂呢,以後咱們就能夠對body盡情的揉捏了。經過jQuery的選擇器,獲取特定的DOM上的值,而後保存起來。最後來講一說,如何將保存後的值,轉化成一個Excel表格,也就是xlsx格式的文件。工具
node-xlsx是經過操做一個數組,而後數組裏面經過不一樣的對象來指定Excel的sheets,而後對象裏面有各類屬性,如data屬性和name屬性,一個是放數據的,一個是指定sheets的名稱的,若不填則默認爲Sheet。若存在多個同名Sheet,則會使用後一個,因此name屬性,沒事就加上吧~。data屬性是精華,經過二維數組來肯定行列。光說無益,來看一下代碼。學習
當把數據準備穩當後,即是經過fs模塊的 writeFileSync 寫入文件,參數分別爲(文件名,文件數據,options選項)。最後node一執行,就能夠導出文件了。能夠查看一下成果。ui
嗯,妥妥的!
固然國內大部分坑爹的gb2312,就沒那麼簡單咯。這裏留個坑~~由於我在buffer這一塊,也沒弄懂~~。