/*超簡易的一個爬蟲,爬慕課網(wǎng)的數(shù)據(jù),并做處理*/
const http = require('http')
const cheerio = require('cheerio')
const url = 'http://www.imooc.com/learn/348'
//http模塊發(fā)出get請求,執(zhí)行回調(diào)函數(shù)
http.get(url, (res) => {
var html = ''
//res觸發(fā)data事件,拼接html字符串
res.on('data', (data) => {
html += data
})
//res最后觸發(fā)end事件,輸出html字符串源碼
res.on('end', () => {
let courseData = filterChapters(html) //res結(jié)束后,把拼裝好的html過濾處理
printCourseInfo(courseData)
})
}).on('error', () => {
console.log('獲取數(shù)據(jù)出錯!');
})
//用cheerio模塊解析獲取的html字符串,爬取數(shù)據(jù)
function filterChapters(html) {
let $ = cheerio.load(html)
let chapters = $('.chapter')
// 期望獲取的數(shù)據(jù)結(jié)構(gòu)
// [{
// chapterTitle: '',
// videos: [{
// title: '',
// id: ''
// }]
// }]
let courseData = []
chapters.each((index, item) => { //不能用箭頭函數(shù),因為沒有this
let chapter = $(item) //用箭頭函數(shù)就要找出回調(diào),回調(diào)參數(shù)log大法找
let chapterTitle = chapter.find('h3 strong').text()
let videos = chapter.find('.video').children('li')
let chapterData = {
chapterTitle,
videos: []
}
videos.each((index, item) => { //不能用箭頭函數(shù),因為沒有this
let video = $(item) //用箭頭函數(shù)就要找出回調(diào),回調(diào)參數(shù)log大法找
let videoTitle = video.find('.J-media-item').text()
let id = video.data('media-id')
chapterData.videos.push({
title: videoTitle,
id: id
})
})
courseData.push(chapterData)
})
return courseData
}
//打印出爬取信息
function printCourseInfo(courseData) {
courseData.forEach((item) => {
let chapterTitle = item.chapterTitle
console.log(chapterTitle);
item.videos.forEach((video) => {
console.log(`[${video.id}] ${video.title}`);
})
})
}
nodejs爬蟲制作
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 內(nèi)容要點 一步一腳印實現(xiàn)一個爬蟲,前面的內(nèi)容比較簡單,有了解可以直接跳過而且文章內(nèi)容較長和多圖,建議在pc下閱讀源...
- <最終爬取全部的圖片全部放在了本地的images中 /** * Created by wusicheng on 2...
- 項目地址:點擊 預(yù)覽地址:點擊 api地址:點擊 爬蟲地址:點擊 技術(shù)棧:vue + vue-router + v...