? ??????一提起爬蟲可能大家就會(huì)覺得很高大上,就會(huì)想起python.呵呵,我們今天偏偏就要顛覆大家的認(rèn)知,用node不到100行代碼擼一個(gè)簡(jiǎ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í)中文的,很容易看懂。

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

? ?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.

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