爬虫
描述:何为爬虫,就是去他人网站观摩一下数据,根据自己的需求,觉得可用,然后通过代码的方式 copy 一下人家的数据呗。(这种解释是不是很微妙😀)
node
描述:node 是一个基于 google 的 v8 引擎设计的服务端的 js 语言,擅长异步 io 请求。方便易用,有很多成型的 web 框架,例如:express、koa、egg、nest 等。(如需深入了解,自行查阅资料)
node 爬虫的搭建
-
需要的模块:
- request(发送 http 请求) 与 fetch 二选一
- fetch(对 request 的封装)与 request 二选一
- cherrio(解析 html 界面,被称为服务端的 jquery) 必选
- fs(可对爬虫到的数据进行文件的读写操作) 可选
- node-schedule (时间管理器,可进行自定义时间进行执行) 对于每日需要执行定时任务是必选的
-
简单的 demo
新建文件:test.js
const fetch = require("fetch");
const cherrio = require("cherrio");
const schedule = require("node-schedule");
const getHtml = (url) => {
return fetch(url).then(res => {
return res.text();
}).catch(error => {
return Promise.resolve(null)
})
}
const main = async () => {
// 总入口
// 内容处理
content();
// 定时器的开启
timer();
}
const content = async() => {
const url = 'www.baidu.com';
const rsData = await getHtml(url);
// 通过cherrio对获取到的html文本进行解析
const $ = cherrio.load(rsData);
// cherrio的命令,可自行在npm官网下查阅
// 查询类parent下的test类下的所有文本信息
const hText = $('.parent').find('.test').text().trim();
console.log('获取到的文本信息', hText);
// 根据自己的需要对数据进行清洗可以写入到文件中也可以放到对应的数据库中。
// 放入到test.test的文件中
fs.wirte('test.text', hText, (e)=> {
if(e){
console.log("写入文件错误,错误为:", e);
}
console.log("写入成功")
})
}
const timer = () => {
// 每天晚上8点执行
const rule = new schedule.RecurrenceRule();
rule.hour = 20
rule.minute = 0
schedule.scheduleJob(rule, function () {
// TODO 需要补充要执行的处理逻辑。这里执行content()测试事例。
content();
})
}
main();
到这里,一个简单的 demo 就实现了,在终端中使用 node test.js 命令即可运行。
结语
希望可以帮助到有需要的小伙伴们。