養一只Node.js爬蟲溜達中國證券網

FVIPrecious 7年前發布 | 13K 次閱讀 Node.js Python 網絡爬蟲

爬蟲的世界如同武林,派別繁多,其中Python

一派簡單易學,深受各位小伙伴的喜愛。現在做大數據(呵呵),不寫幾個爬蟲都不好意思了,甚至數據分析R語言也被大牛們插上翅膀,開始在Web上溜達,尋覓著數據分析的原料。

先前我主要是用Python3做爬蟲,主打的工具是request、Beautiful Soup和lxml。雖然Python有Scrapy這么成熟的框架,但是平時還是根據需求直接擼代碼。后來在看 Node.js 文檔時發現Node.js有http(s)模塊,可以實現請求。此外還有與Python中類似的request。所以用Node.js做爬蟲也是比較便捷的。至于關心Node.js VS Python的小伙伴,可以自行百度或者谷歌。

谷歌了一下,發現有部分零散的材料在講Node.js爬蟲, 不過代碼風格和工具比較混雜 :有的寫function,有的寫箭頭函數;有的是處處皆為var,有的是用let和const。主要原因是Node.js是JavaScript運行環境,JavaScript作為有活力的語言,一直在修訂和完善標準 ECMAScript 。從2015年開始,基本上市每年都出一個版本ECMAScript。此外,Node.js自己也是一個 版本帝 。

=====================================================================

這次使用的工具:

Win10 64bit 
Visual Studio Code 1.9.0
Node.js7.5.0

用來演示的是上海證券報的官方網站 http://www. cnstock.com/ 本次演示僅供學習,沒有其他不良意圖。

======================================================================

簡單的爬蟲流程可以總結為: 發送 請求-- 獲取 網頁-- 提取 信息-- 保存 信息-- 分析 數據-- 報告 結論。

首先,我們來看一下最簡單的環節。

這里演示的主要是發送請求和讀取網頁。這個代碼與Python基本上差不多。幾行代碼就實現了讀取整個網站的首頁信息。Node.js默認是utf8編碼,這個編碼比較通用,遇到gbk編碼的網頁需要另行處理。因為 http://www. cnstock.com/ 采用的是http協議,所采用Node.js的http模塊,如果網站是https協議,那么相應的采用https模塊。這兩個模塊都是Node.js的自帶模塊。不過要是采用第三方模塊request就不用擔心網站是http還是https,request都可以處理。

---------------------------------------------------------------------------------------------------------------------------

上面只是直接讀取網頁信息,并沒有對網頁信息進行解析,解析之后就可以抓取自己關心的數據了。這里引入一個第三方包cheerio,這個包在功能上類似于Python中的lxml和BS。

這里主要演示幾個常用的功能。

如何清除H5、CSS、JS的標簽信息,僅僅保留網頁文本信息?

上面的信息看起仍然有點亂,如何去除空白符?直接保留關心的信息,這樣方便做進一步分析,如文本分析。

上面的處理用力過猛了。那么如何只是清除多余的空格?

上面演示的是直接對整個頁面的信息處理。那么如何提取我們關心的信息呢?

假設我們要提取“上證快訊”的信息。

具體Node.js代碼如下。

主要是通過標簽和屬性值進行定位的。具體如下圖所示。

看完了“上證快訊”, 我們來看一下有哪些“研究報告”?

---------------------------------------------------------------------------------------------------------------------------

網站還有一個搜索功能。這就讓Node.js爬蟲去溜達一下。

距離兩會還有一段時間,但是資本市場已經聞會而動了。一起來看看有哪些熱點新聞。這里引入了一個新的模塊querystring,主要是構造一個新的url。當然也可以用url模塊來構造。這里的keyword就是我們關心的關鍵詞,當然也可以設置為其他的關鍵詞。t取值為1表示檢索新聞,取值為0表示檢索全部網頁。如果想知道新聞鏈接和新聞時間,直接增加一行代碼即可。

console.info($('p.link').text());

=====================================================================

前面提到簡單的爬蟲流程可以總結為: 發送請求--獲取網頁--提取信息--保存信息 --分析數據--報告結論。

這里引入一個新的第三方包request,同時引入Node.js自帶模塊fs。這里演示一個簡單完整的小爬蟲。

上代碼。

上圖的代碼主要實現了 打印 要抓取的信息、 保存 要抓取的信息、 保存 整個網頁。

======================================================================

簡言之,在VSC中養一只Node.js爬蟲,溜達一下資本市場信息,別有一番趣味。

 

來自:https://zhuanlan.zhihu.com/p/25145607

 

 本文由用戶 FVIPrecious 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!