Node.js爬虫(本测试爬虫新浪博客NBA新闻)步骤如下:
1. 进入Node.js中文网,选择对应版本下载,下载后安装
进入命令行,输入node –v,若出现版本号,则安装成功
2.本测试实用Subline Text2编辑器,下载并安装。创建文件夹。命令行进入文件夹,输入npm install cheerio,安装cheerio。
安装成功后,文件夹中会多出两个文件
3. 在该文件夹下创建getData.js文件。代码如下:
//http方式访问url返回数据
//nodejs单线程占用资源少
const http = require("http");//模块引入方法
const url="http://sports.sina.com.cn/nba/1.shtml";
const cheerio=require("cheerio");
const fs=require("fs");
http.get(url,(res)=>{
var html="";
//有数据过来
res.on("data",(chunk)=>{
html+=chunk;
});
//请求数据全部发送完毕之后
res.on("end",()=>{
const $=cheerio.load(html);//直接获取页面内容 通过cheerio模块处理内容
$("#right a").each(function(index){
const newUrl=$(this).attr("href");//获取到目标元素中的a标签中的href属性
console.log(index);
http.get(newUrl,(res)=>{
var newHtml="";
res.on("data",(chunk)=>{
newHtml+=chunk;
});
res.on("end",()=>{
fs.writeFile(`./news/${index}.html`,newHtml,(err)=>{//访问到里面所有的链接并且把内容取出 生成一个新的页面
if(err){throw err}
console.log('新闻${index}.html生成结束')
});
});
}).on("error",(e)=>{
//请求出错
console.log('错误:${e.message}');
});
});
//console.log($("#right a").text());
});
}).on("error",(e)=>{
//请求出错
console.log('错误:${e.message}');
});
因为本测试将爬取到的数据存放到`./news/${index}.html`路径下,所以在该目录下继续创建文件夹news,最后文件夹下有如下文件。
4. 打开命令行,进入该文件夹路径下,输入:node getdata.js运行,结果如下
打开news文件夹,爬取的网页信息