node.js實現(xiàn)簡單爬蟲示例詳解
node.js實現(xiàn)簡單爬蟲
工具:cheerio
cheerio 是 nodejs 特別為服務端定制的,能夠快速靈活的對 JQuery 核心進行實現(xiàn)。它工作于 DOM 模型上,且解析、操作、呈送都很高效。 更多 API 參看: github.com/cheeriojs/c…
我們以慕課網(wǎng)頁面為例,爬取每個視頻課程的標題和課程對應 id,期望結(jié)構(gòu)如下:
titles = [{
chapterTitle: chapterTitle,
id: id
}]
第一步
我們用node寫一個請求,獲取想要爬蟲的網(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ù)錯誤!')
})
第二步
我們根據(jù)需求來編寫過濾HTML的函數(shù),將過濾后的數(shù)據(jù)打印在控制臺。
function filterChapters(html) {
var $ = cheerio.load(html)
var chapters = $('.course-card-container')//以類名獲取節(jié)點元素
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應用
【882】基于websocket的火拼俄羅斯(單??版)
【861】基于Websocket的火拼俄羅斯(基礎)
【866】前端性能優(yōu)化-通用的緩存SDK
【773】AC2016騰訊前端技術(shù)大會
【728】創(chuàng)業(yè)公司的Nodejs工程師
【725】Roundtable前端分享專場
【637】進擊Node.js基礎(二)
【590】阿里D2前端技術(shù)論壇——2015融合
【564】去哪兒前端沙龍分享第三期
【556】慕課網(wǎng)技術(shù)沙龍之前端專場
【434】去哪兒前端沙龍分享第二期
【367】Qnext前端交互沙龍
【348】進擊Node.js基礎(一)
【221】D2前端技術(shù)論壇——2014綻放
【197】node建站攻略(二期)——網(wǎng)站升級
【75】node+mongodb 建站攻略(一期)
小結(jié):
node.js使得JavaScript代碼能夠運行在服務端,從而進行一些操作,node.js的更多用法參看后續(xù)文章.
以上就是node.js實現(xiàn)簡單爬蟲示例詳解的詳細內(nèi)容,更多關(guān)于node.js簡單爬蟲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)
這篇文章主要介紹了用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox),非常具有實用價值,需要的朋友可以參考下2017-05-05
Nodejs實現(xiàn)多人同時在線移動鼠標的小游戲分享
這篇文章主要介紹了Nodejs實現(xiàn)多人同時在線移動鼠標的小游戲分享,本文給出了服務器端和客戶端代碼以及運行方法,需要的朋友可以參考下2014-12-12
Node.js 使用axios讀寫influxDB的方法示例
這篇文章主要介紹了Node.js 使用axios讀寫influxDB的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實現(xiàn)的封裝緩存類,涉及nodejs操作redis進行緩存設置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
node.js調(diào)用Chrome瀏覽器打開鏈接地址的方法
其實在Node.JS中打開瀏覽器網(wǎng)址非常簡單,但還是有必要整理下分享給有需要的朋友們,這篇文章主要給大家介紹了node.js如何調(diào)用Chrome瀏覽器打開鏈接地址的方法,文中介紹的非常詳細,需要的朋友們下面隨著小編來一起看看吧。2017-05-05

