手把手教你十分鐘搞一個(gè)Node爬蟲

? ??????一提起爬蟲可能大家就會(huì)覺得很高大上,就會(huì)想起python.呵呵,我們今天偏偏就要顛覆大家的認(rèn)知,用node不到100行代碼擼一個(gè)簡(jiǎn)單的爬蟲。

圖文無(wú)關(guān)

準(zhǔn)備


1.node環(huán)境

2.egg.js(可以不用框架,自己搭建http請(qǐng)求模塊)

3.cherrio模塊(用于解析DOM)

正文


那么下面事不宜遲,馬上開始正文內(nèi)容:

1.node環(huán)境

????????關(guān)于這點(diǎn),我們就此處省略幾百字.........一不小心就說(shuō)出了心里話,本著手把手教學(xué)的教學(xué)理念,我在這里還是簡(jiǎn)單說(shuō)一下吧。1.首先我們要下載一個(gè)node環(huán)境( 下載網(wǎng)址:https://nodejs.org/en/download/?) 2. 然后這里推薦還是先也安裝好cnpm淘寶鏡像。因?yàn)楸疚挠玫搅薳gg.js框架,用cnpm安裝依賴會(huì)比較便捷。(直接在cmd上執(zhí)行npm install cnpm -g --registry=https://registry.npm.taobao.org)?

? ? *By the way 可以在cmd中輸入 npm -v 檢測(cè)當(dāng)前的npm版本,如果版本太低了可以通過 npm install npm -g 指令更新當(dāng)前的npm版本。

2.egg.js

????如何搭建egg.js的開發(fā)環(huán)境,相信沒有什么比官方文檔更權(quán)威吧。官方文檔時(shí)中文的,很容易看懂。

egg.js文檔截圖

? ? ? ? 在搭建好開發(fā)環(huán)境之后終于可以安心寫代碼了,真是搭建一小時(shí),編寫10分鐘啊。初始化項(xiàng)目之后其實(shí)可以發(fā)現(xiàn)我們這次項(xiàng)目用到的就只有controller和service.在本次的項(xiàng)目我就把數(shù)據(jù)的爬取寫在了service層,而controller層我就主要用于接收客戶端的請(qǐng)求。

????????Controller層代碼如下:

Contoller代碼截圖

? ?Service層代碼如下:

Service層代碼截圖

? 在這里我是采用boss直聘作為例子的。url的格式很容易就能夠發(fā)現(xiàn),我們的請(qǐng)求是直接通過egg.js封裝好的請(qǐng)求方式進(jìn)行網(wǎng)絡(luò)請(qǐng)求的。在這里我特別提醒下,記得將header的dataType設(shè)置為'text'不然的話我們將會(huì)獲取到buffer數(shù)據(jù)。

3.Cherrio

? 終于來(lái)到了今天的最后也是最重要的一個(gè)模塊了--就是cherrio.如果學(xué)習(xí)過jquery的同學(xué)學(xué)習(xí)這個(gè)工具不會(huì)很難,應(yīng)為它們的語(yǔ)法是極其相似的??梢哉f(shuō)Cherrio就是node的jquery.


cherrio代碼截圖

? 我們用node爬到數(shù)據(jù)后,就要對(duì)爬到的html代碼進(jìn)行解讀,讀取出我們需要使用的數(shù)據(jù)。然后通過cherrio將數(shù)據(jù)拿到,最后返回controller即可。

附錄


egg.js官方文檔

cheerio官方文檔

代碼倉(cāng)庫(kù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容