美文网首页
nodejs爬虫制作

nodejs爬虫制作

作者: 辉夜乀 | 来源:发表于2017-07-25 14:57 被阅读37次
    /*超简易的一个爬虫,爬慕课网的数据,并做处理*/
    
    const http = require('http')
    const cheerio = require('cheerio')
    const url = 'http://www.imooc.com/learn/348'
    
    //http模块发出get请求,执行回调函数
    http.get(url, (res) => {
      var html = ''
    
      //res触发data事件,拼接html字符串
      res.on('data', (data) => {
        html += data
      })
    
      //res最后触发end事件,输出html字符串源码
      res.on('end', () => {
        let courseData = filterChapters(html) //res结束后,把拼装好的html过滤处理
        printCourseInfo(courseData)
      })
    }).on('error', () => {
      console.log('获取数据出错!');
    })
    
    //用cheerio模块解析获取的html字符串,爬取数据
    function filterChapters(html) {
      let $ = cheerio.load(html)
      let chapters = $('.chapter')
    
      // 期望获取的数据结构
      //   [{
      //     chapterTitle: '',
      //     videos: [{
      //       title: '',
      //       id: ''
      //     }]
      //   }]
    
      let courseData = []
    
      chapters.each((index, item) => { //不能用箭头函数,因为没有this
        let chapter = $(item) //用箭头函数就要找出回调,回调参数log大法找
        let chapterTitle = chapter.find('h3 strong').text()
        let videos = chapter.find('.video').children('li')
        let chapterData = {
          chapterTitle,
          videos: []
        }
    
        videos.each((index, item) => { //不能用箭头函数,因为没有this
          let video = $(item) //用箭头函数就要找出回调,回调参数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爬虫制作

          本文链接:https://www.haomeiwen.com/subject/nxwwkxtx.html