第一步,下载包superagent,cheerio####
npm i cheerio //-----cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速、灵活、实施的jQuery核心实现。适合各种Web爬虫程序。相当于node.js中的jQuery
npm i superagent //-----superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下
第二步,在index.js中引入包####
var cheerio = require('cheerio');
var superagent = require('superagent');
第三步,代码整理####
superagent.get('https://tieba.baidu.com/index.html')
.end(function (err, sres) {
if (err) {
return next(err);
}
/**
*这里的sres.text就是爬取页面的html,可以在下方打印
*/
console.log('页面的html:', sres.text)
/**
*cheerio也就是nodejs下的jQuery 将整个文档包装成一个集合,定义一个变量$接收
*/
var $ = cheerio.load(sres.text);
var items = [];
/**
* 可以先看看页面结构,找出你想爬取的数据,餐后操作dom取得数据
*/
$('.directory-wraper').find('a').each(function (idx, element) {
var $element = $(element);
/**
* 拼装数据
*/
items.push({
title: $element.title,
href: $element.attr('href')
});
//这里的items就是我们要的数据
});
});
第四步:导出####
//这里我们要用到fs进行导出
//引入fs
var fs = require('fs')
//调用fs writeFile方法 写入数据, 文件不存在会自动创建 fs.writeFile(路径及文件名,写入的数据,回调函数)
fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
if (err) throw err;
console.log('创建文件成功222');
});
最后的代码汇总####
superagent.get('https://tieba.baidu.com/index.html')
.end(function (err, sres) {
if (err) {
return next(err);
}
// console.log('页面的html:', sres.text)
var $ = cheerio.load(sres.text);
var items = [];
$('.directory-wraper').find('a').each(function (idx, element) {
var $element = $(element);
items.push({
title: $element.title,
href: $element.attr('href')
});
});
//删除文件
fs.unlink('D:/test2.txt',function(err){
try{
if (err) throw err;
// 写入数据, 文件不存在会自动创建
fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
if (err) throw err;
console.log('创建文件成功111');
});
}catch(e){
// 写入数据, 文件不存在会自动创建
fs.writeFile('D:/test2.txt', JSON.stringify(items), function (err) {
if (err) throw err;
console.log('创建文件成功222');
});
}
console.log('删除文件成功!!')
})
总结####
思路:找到爬取目标网页,找到网页需要爬取的数据,发现规律,先用superagent得到网页,再导入cheerio,按照找出的规律循环出数据,进行拼装,再导出