溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

用Nodejs做一個(gè)簡單的小爬蟲

發(fā)布時(shí)間:2020-07-24 18:27:13 來源:網(wǎng)絡(luò) 閱讀:730 作者:tower1229 欄目:開發(fā)技術(shù)

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

 

    下面簡述一下實(shí)現(xiàn)過程。首先挑選爬取對象,這里選擇的也是門檻比較低的新聞?wù)綾nBeta.com,因?yàn)槊刻焐衔缍家ス湟还?,比較熟悉,為什么說新聞?wù)颈容^簡單呢,因?yàn)橥ǔ_@類網(wǎng)站不要求用戶登錄,所有爬蟲的請求很容易偽造。

 

    爬蟲的基本思路是,獲取頁面->構(gòu)造信息選擇器->分析頁面鏈接->獲取相鄰頁面->循環(huán)第一步,對于新聞?wù)緛碚f,我們要獲取的就是新聞內(nèi)容啦,請求到頁面html代碼后,只要從頁面中找到內(nèi)容容器元素就很容易獲取到新聞內(nèi)容,下一步是獲取相鄰頁面的地址,cnBeta新聞是有上一頁下一頁鏈接的,但仔細(xì)觀察會發(fā)現(xiàn)其實(shí)使用js動(dòng)態(tài)生成的,這里需要找出js是如何獲取到鏈接的,拿到鏈接我們就繼續(xù)獲取下一篇新聞的html代碼,周而復(fù)始。

 

    期間肯定不會一帆風(fēng)順,比如就遇到了301跳轉(zhuǎn),好在從請求頭中很容易找到了跳轉(zhuǎn)目標(biāo),發(fā)現(xiàn)301跳轉(zhuǎn)后立即放棄請求重新請求跳轉(zhuǎn)地址就好了。

 

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

 

    詳細(xì)的分析過程見另一篇文章: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/。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI