美文网首页
利用http模块爬虫网页

利用http模块爬虫网页

作者: 十年之后_b94a | 来源:发表于2017-11-15 19:35 被阅读0次

    直接上代码

    var http = require('http');                                              //引用http模块
    var fs = require('fs');                                              //引用fs模块,将得到的结果直接保存在某个文件里面
                                                                
    http.get('https://www.baidu.com/',function(res){                         //http  GET方法请求资源
                                                                               //有回掉函数  参数res 响应头信息
      var html = '';
      res.on('data',function(data){                   //绑定请求数据函数
          html += data; //保存结果
       })
      res.on('end',function(){                  //绑定请求结束方法 end
        fs.writeFile('文件Path',html,function(){
        console.log(''写入完成');
      })
    })
    }).on('error',function(err){
      console.log('请求出错');
    })
    

    利用简单的http和fs模块吧获取的html代码 直接写入指定的文件中。

    进阶 利用 cheerio模块获取页面指定的内容

    1、安装

    在项目文件夹中安装cheerio模块
    image.png
    function cheerFn(data){
        //得到的数据格式最终是
        /*[
            {
                title:'', //大标题
                video:[{
                    title:'',//小标题
                    id:''}
                ]
            },{}
        ]*/
       var $ = cheerio.load(data);   //把得到的html网页 填入cheerio模块中,用法和jq一样减少了dom操作
       var result = [];
        for(var i=0;i<$('strong').length;i++){
            //console.log($('strong').eq(i).children())
            var str = '';
            str = $('strong').eq(i).text().trim();
            result[i] = {};
            result[i].title  = str.split('\n')[0];
            result[i].video = [];
            for(var j=0;j<$('ul.video').eq(i).find('li').length;j++){
                var ss = '';
                ss = $('ul.video').eq(i).find('li').eq(j).text().trim();
                result[i].video[j] = {};
                result[i].video[j].title = ss.split('\n')[0]+ss.split('\n')[1].trim();
                result[i].video[j].id = $('ul.video').eq(i).find('li').eq(j).attr('data-media-id');
            }
        }
        fs.writeFile('./json.txt',JSON.stringify(result),function(){
            console.log('写入完成!')
        })
    }
    

    这个函数在响应头结束事件中调用 参数就是前面定义的html

    res.on('end',function(){
      在这里调用
    })
    

    相关文章

      网友评论

          本文标题:利用http模块爬虫网页

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