博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs之http.request 网页抓取数据
阅读量:4289 次
发布时间:2019-05-27

本文共 1791 字,大约阅读时间需要 5 分钟。

var fs=require('fs');
var http=require('http');
var url=require('url');
var gbk=require('gbk');//转换字符编码
var jsdom=require('jsdom');//操作jsdocument
var JSDOM=jsdom.JSDOM;
//调用
getUrl('',(data,str)=>{//这里的data是参数,es6的函数新写法
  // fs.writeFile('one.jpg',data,()=>{//data是数组,one.jpg是图片名称或文件名称
  //   console.log('抓取图片成功');
  // });
  var htlm=gbk.toString('utf-8',str);//吧gbk的字符串数据转成utf8的字符串
  let dom=new JSDOM(html);//吧html字符串加载到doom中去
  let document=dom.window.document;
  console.log(document.querySelect(':f').innerHTML);//:f是选择器
});
//写一个函数解析url
function getUrl(sUrl,success){
  var urlObject=url.parse(sUrl);//解析成url对象
  var http='';
  if(urlObject.protocol=='http:'){
     http=require('http');
  }else{
     http=require('https');
  }
  let req=http.request({
    'hostname':urlObject.hostname,//主机或域名baidu.com
    'path':urlObject.pathname//路径/baidupan
  },res=>{//这里的res是回调函数参数
    if(res.statueCode==200){
      var arr=[];
      var str='';
      res.on('data',buffer=>{
        arr.push(buffer);//用数组添加
        str+=buffer;//用字符串拼接
      });
      res.on('end',()=>{
        let b=Buffer.contact(arr);
          success&& success(b,str);
      });
    }else if(res.statueCode==302 ||res.statueCode==301){
      getUrl(res.headers.location,success);
    }
  });
  req.end();//结束请求
req.on('error',()=>{
  console.log('404');
});
}
******************************************************
//方法2
let req=http.request({
  'hostname':'',//主机或域名baidu.com
  'path':''//路径/baidupan
},res=>{
  var arr=[];
  var str='';
  res.on('data',buffer=>{
    arr.push(buffer);//用数组添加
    str+=buffer;//用字符串拼接
  });
  res.on('end',()=>{
    let b=Buffer.contact(arr);
    fs.writeFile('one.jpg',b,()=>{
      console.log('抓取图片成功');
    });
  });

});

**************************************

echarts.js比例图显示插件:如饼状,柱状图

//segment中文分词
let seg=new segment();
seg.userDefault();
var str="今天是星期天,有加班";
var arr=seg.doSegment(str);
var ar=[];
arr.forEach(data=>{
  if(data.p!=20){
    ar.push(data.w);
  }
});

转载地址:http://dnmgi.baihongyu.com/

你可能感兴趣的文章
信号量与互斥锁
查看>>
linux 查看CPU个数,核数
查看>>
string 序列化
查看>>
va_start(),va_end()函数应用
查看>>
crontab命令
查看>>
State Threads——异步回调的线性实现
查看>>
va_start va_end
查看>>
共享内存,共享缓冲区 一对多
查看>>
无锁队列的实现
查看>>
CAS原子操作实现无锁及性能分析
查看>>
太上老君为何不能将孙悟空炼化
查看>>
Linux 互斥锁、原子操作实现原理
查看>>
搭建简单hls直播测试服务
查看>>
共享内存的数据同步
查看>>
LVS-入门试用
查看>>
Cache和Buffer的区别
查看>>
50个sql语句
查看>>
MYSQL sql 语句性能分析
查看>>
C++操作Redis数据库
查看>>
python yield用法
查看>>