您的位置:首页 > Web前端 > Node.js

node.js 爬虫初阶入门

2020-02-02 03:14 806 查看

第一步,下载包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,按照找出的规律循环出数据,进行拼装,再导出

转载于:https://www.cnblogs.com/yzyh/p/9957688.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
dengye7077 发布了0 篇原创文章 · 获赞 0 · 访问量 430 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: