node.js實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)示例詳解
node.js實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)
工具:cheerio
cheerio 是 nodejs 特別為服務(wù)端定制的,能夠快速靈活的對(duì) JQuery 核心進(jìn)行實(shí)現(xiàn)。它工作于 DOM 模型上,且解析、操作、呈送都很高效。 更多 API 參看: github.com/cheeriojs/c…
我們以慕課網(wǎng)頁(yè)面為例,爬取每個(gè)視頻課程的標(biāo)題和課程對(duì)應(yīng) id,期望結(jié)構(gòu)如下:
titles = [{ chapterTitle: chapterTitle, id: id }]
第一步
我們用node寫(xiě)一個(gè)請(qǐng)求,獲取想要爬蟲(chó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ù)需求來(lái)編寫(xiě)過(guò)濾HTML的函數(shù),將過(guò)濾后的數(shù)據(jù)打印在控制臺(tái)。
function filterChapters(html) { var $ = cheerio.load(html) var chapters = $('.course-card-container')//以類(lèi)名獲取節(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') }); }
爬蟲(chóng)結(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前端分享專(zhuān)場(chǎng)
【637】進(jìn)擊Node.js基礎(chǔ)(二)
【590】阿里D2前端技術(shù)論壇——2015融合
【564】去哪兒前端沙龍分享第三期
【556】慕課網(wǎng)技術(shù)沙龍之前端專(zhuān)場(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)簡(jiǎn)單爬蟲(chóng)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于node.js簡(jiǎn)單爬蟲(chóng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- node.js做一個(gè)簡(jiǎn)單的爬蟲(chóng)案例教程
- node.js爬蟲(chóng)框架node-crawler初體驗(yàn)
- Node.js爬蟲(chóng)如何獲取天氣和每日問(wèn)候詳解
- 基于node.js實(shí)現(xiàn)爬蟲(chóng)的講解
- node.js學(xué)習(xí)筆記之koa框架和簡(jiǎn)單爬蟲(chóng)練習(xí)
- 淺談Node.js爬蟲(chóng)之網(wǎng)頁(yè)請(qǐng)求模塊
- 使用 Node.js 開(kāi)發(fā)資訊爬蟲(chóng)流程
- 基于node.js制作簡(jiǎn)單爬蟲(chóng)教程
- 利用node.js寫(xiě)一個(gè)爬取知乎妹紙圖的小爬蟲(chóng)
- node.js爬蟲(chóng)爬取拉勾網(wǎng)職位信息
- Node.js?實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)的示例代碼
相關(guān)文章
Node.js實(shí)現(xiàn)修改文件字符集功能的具體過(guò)程
在日常生活、工作中,我們經(jīng)常會(huì)遇到需要處理不同編碼格式的文件,有時(shí),在嘗試打開(kāi)這些文件時(shí)會(huì)遇到亂碼,原因通常是文件的編碼與我們使用的文本編輯器或編程語(yǔ)言的默認(rèn)編碼不匹配,這篇文章將介紹Node.js修改文件字符集的實(shí)現(xiàn)思路和具體實(shí)現(xiàn)過(guò)程2024-08-08用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)
這篇文章主要介紹了用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享
這篇文章主要介紹了Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享,本文給出了服務(wù)器端和客戶(hù)端代碼以及運(yùn)行方法,需要的朋友可以參考下2014-12-12Node.js 使用axios讀寫(xiě)influxDB的方法示例
這篇文章主要介紹了Node.js 使用axios讀寫(xiě)influxDB的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類(lèi)示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類(lèi),涉及nodejs操作redis進(jìn)行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02node.js調(diào)用Chrome瀏覽器打開(kāi)鏈接地址的方法
其實(shí)在Node.JS中打開(kāi)瀏覽器網(wǎng)址非常簡(jiǎn)單,但還是有必要整理下分享給有需要的朋友們,這篇文章主要給大家介紹了node.js如何調(diào)用Chrome瀏覽器打開(kāi)鏈接地址的方法,文中介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起看看吧。2017-05-05