node.js實(shí)現(xiàn)簡單爬蟲示例詳解
node.js實(shí)現(xiàn)簡單爬蟲
工具:cheerio
cheerio 是 nodejs 特別為服務(wù)端定制的,能夠快速靈活的對(duì) JQuery 核心進(jìn)行實(shí)現(xiàn)。它工作于 DOM 模型上,且解析、操作、呈送都很高效。 更多 API 參看: github.com/cheeriojs/c…
我們以慕課網(wǎng)頁面為例,爬取每個(gè)視頻課程的標(biāo)題和課程對(duì)應(yīng) id,期望結(jié)構(gòu)如下:
titles = [{
chapterTitle: chapterTitle,
id: id
}]
第一步
我們用node寫一個(gè)請(qǐng)求,獲取想要爬蟲的網(wǎng)站html,這里以慕課網(wǎng)為例:
var http = require('http')
var url = 'http://www.imooc.com/course/list?c=nodejs'
http.get(url, function(res){
var html = ''
res.on('data', function(data){
html += data
})
res.on('end', function(){
var result = filterHml(html)
print(result)
})
}).on('error', function(){
console.log('獲取數(shù)據(jù)錯(cuò)誤!')
})
第二步
我們根據(jù)需求來編寫過濾HTML的函數(shù),將過濾后的數(shù)據(jù)打印在控制臺(tái)。
function filterChapters(html) {
var $ = cheerio.load(html)
var chapters = $('.course-card-container')//以類名獲取節(jié)點(diǎn)元素
var titles = []
chapters.each(function (item) {
var chapter = $(this)
var chapterTitle = chapter.find('h3').text()
var id = chapter.find('a').attr('href').split('learn/')[1]
titles.push({
chapterTitle: chapterTitle,
id: id
})
})
return titles
}
function printCourseInfo(courseData){
courseData.forEach(item => {
console.log('【' + item.id + '】' + item.chapterTitle + '\n')
});
}
爬蟲結(jié)果
【935】Vue+Webpack打造todo應(yīng)用
【882】基于websocket的火拼俄羅斯(單??版)
【861】基于Websocket的火拼俄羅斯(基礎(chǔ))
【866】前端性能優(yōu)化-通用的緩存SDK
【773】AC2016騰訊前端技術(shù)大會(huì)
【728】創(chuàng)業(yè)公司的Nodejs工程師
【725】Roundtable前端分享專場(chǎng)
【637】進(jìn)擊Node.js基礎(chǔ)(二)
【590】阿里D2前端技術(shù)論壇——2015融合
【564】去哪兒前端沙龍分享第三期
【556】慕課網(wǎng)技術(shù)沙龍之前端專場(chǎng)
【434】去哪兒前端沙龍分享第二期
【367】Qnext前端交互沙龍
【348】進(jìn)擊Node.js基礎(chǔ)(一)
【221】D2前端技術(shù)論壇——2014綻放
【197】node建站攻略(二期)——網(wǎng)站升級(jí)
【75】node+mongodb 建站攻略(一期)
小結(jié):
node.js使得JavaScript代碼能夠運(yùn)行在服務(wù)端,從而進(jìn)行一些操作,node.js的更多用法參看后續(xù)文章.
以上就是node.js實(shí)現(xiàn)簡單爬蟲示例詳解的詳細(xì)內(nèi)容,更多關(guān)于node.js簡單爬蟲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
node.js微信小程序配置消息推送的實(shí)現(xiàn)
這篇文章主要介紹了node.js微信小程序配置消息推送的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
詳解NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽
本文主要介紹了NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽的方法,具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
Node.js中child_process實(shí)現(xiàn)多進(jìn)程
這篇文章主要介紹了Node.js中child_process實(shí)現(xiàn)多進(jìn)程,需要的朋友可以參考下2015-02-02
詳解Express筆記之動(dòng)態(tài)渲染HTML(新手入坑)
這篇文章主要介紹了詳解Express筆記之動(dòng)態(tài)渲染HTML(新手入坑),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12

