用Nodejs做一個簡單的小爬蟲

Nodejs將JavaScript語言帶到了服務器端,作爲js主力用戶的前端們,因此獲得了服務器端的開發能力,但除了用express搭建一個博客外,還有什麼好玩的項目可以做呢?不如就做一個網絡爬蟲吧。據說互聯網上的流量90%以上都是爬蟲貢獻的,不知道真假,但起碼證明了,爬蟲是一種用途廣泛的東西,尤其在電商比價領域,整個就是爬蟲的技術較量,當然我要做的是爬蟲中的弱雞,只實現基本功能,先上源碼

 

    下面簡述一下實現過程。首先挑選爬取對象,這裏選擇的也是門檻比較低的新聞站cnBeta.com,因爲每天上午都要去逛一逛,比較熟悉,爲什麼說新聞站比較簡單呢,因爲通常這類網站不要求用戶登錄,所有爬蟲的請求很容易僞造。

 

    爬蟲的基本思路是,獲取頁面->構造信息選擇器->分析頁面鏈接->獲取相鄰頁面->循環第一步,對於新聞站來說,我們要獲取的就是新聞內容啦,請求到頁面html代碼後,只要從頁面中找到內容容器元素就很容易獲取到新聞內容,下一步是獲取相鄰頁面的地址,cnBeta新聞是有上一頁下一頁鏈接的,但仔細觀察會發現其實使用js動態生成的,這裏需要找出js是如何獲取到鏈接的,拿到鏈接我們就繼續獲取下一篇新聞的html代碼,周而復始。

 

    期間肯定不會一帆風順,比如就遇到了301跳轉,好在從請求頭中很容易找到了跳轉目標,發現301跳轉後立即放棄請求重新請求跳轉地址就好了。

 

    另外,爬蟲不能無限制的爬取,否則很容易被封IP,需要設置一個爬取條數的限制。最好再做一個爬取間隔的設置,但這裏只用作學習Nodejs,不會大量的爬取,因此也就沒必要做爬取間隔了。

 

    詳細的分析過程見另一篇文章:http://refined-x.com/2017/06/09/Nodejs%E7%88%AC%E8%99%AB%E5%AE%9E%E8%B7%B5%E5%B0%8F%E8%AE%B0/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章