js 爬虫抓取网页数据( 用get请求方式进行数据请求完成后我们可以执行一下)

优采云 发布时间: 2021-12-18 18:19

  js 爬虫抓取网页数据(

用get请求方式进行数据请求完成后我们可以执行一下)

  var http = require("http");//引入标准的http模块

  使用get请求方式进行数据请求

  http.get(url,function(res){

//程序发送一个http请求的时候 此函数就会立马执行 res后端返回过来并且已经被解析的HTTP报文

var html ="";

res.on("data",function(chunk){

//有一段流接收到之后就会执行的回调函数

html += chunk;//把每一段流都拼接起来

});//*敏*感*词*

res.on("end",function(){

//所有信息传输完毕后所执行的回调函数

console.log(html);

});

});//向网络发送GET请求,请求网络资源

  完成后我们就可以执行了,打开window键+R键打开操作,输入cmd打开命令行如下:

  

  然后回车,你会发现已经获取到了目标页面的一些信息,但是只是以字符串的形式显示出来,并不整齐

  

  这时候就需要cheerio包来解析字符串

  存储爬取目标URL后引入cheerio包

  var cheerio = require("cheerio");

  然后进行DOM字符串解析

  http.get(url,function(res){

//程序发送一个http请求的时候 此函数就会立马执行 res后端返回过来并且已经被解析的HTTP报文

var html ="";

res.on("data",function(chunk){

//有一段流接收到之后就会执行的回调函数

html+=chunk;//把每一段流都拼接起来

});//*敏*感*词*

res.on("end",function(){

var $ = cheerio.load(html);//解析Dom字符串

$("#right a").each(function(){

var articleUrl = $(this).attr("href");

http.get(articleUrl,function(res){

var html = "";

res.on("data",function(chunk){

html+=chunk;

});

res.on("end",function(){

console.log(html);

});

});

});

});

});//向网络发送GET请求,请求网络资源

  然后继续爬取目标页面,但有时会因为网络原因出现错误

  我们只需要执行错误处理操作

   //*敏*感*词*错误事件

}).on("error",function(err){

//对程序意外错误进行处理

console.log(err.message);//在日志中打印错误具体描述

});

  这时候,当你运行爬取网页的程序时,你会发现你的命令行会像Matrix一样爬取并打印网页的所有源代码,但我们需要的只是网页的数据信息页,并且不需要源代码字符串。显示,这次我们可以 res.on("end",function(){}); 再次执行字符串解析

   res.on("end",function(){

var $ = cheerio.load(html);//解析Dom字符串

var oText = $("#artibody").text();

console.log(oText);

});

  然后我们可以看到刚才爬取得到的数据已经被过滤掉了,只显示了需要的文字信息

  如下所示:

  

  爬取到需要的信息数据后,我们还可以对其进行文件流式操作,并将爬取到的信息保存到本地文件夹中

  在进行文件流操作时,我们需要引入fs模块

  var fs = require("fs");

  然后我们在项目文件夹下新建一个文件夹news,然后在我们刚才提到的climb事件的最后写一个写文件操作。

  fs.writeFile("./news/");

  这时候我们需要提供一些参数,我们需要保证生成的txt文件的命名是唯一的,这样我们就可以在前面生成一个时间戳

  var time = new Date().valueOf();//生成时间戳

  然后将时间戳和开头的命名和文本放入

  fs.writeFile("./news/nba"+time+".txt",oText);

  然后再次运行程序,就可以生成我们的文件了

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线