youngwanlia@gmail.com
因为后续会搭建一个 全栈我的网站
,目前暂定放一些技术文档
全民K歌资源
B站制做的视频
,也打算把博客
集成在网站中。因此本篇就来分享一下node爬虫
。 总体这个网站分为三个部分node
这篇就打算先爬虫一些数据
,暂且放在本地的数据库里mysql
俗话说,工欲善其事,必先利其器
,那么前期准备无非即是jquery
关于node
这份文档,我们直接读中文文档也行,我以为git
至于爬个虫为何还须要jQuery
呢,请接着阅读web
npm install -g nodemon
复制代码
yarn add axios
复制代码
yarn add mysql
复制代码
yarn add cheerio
复制代码
获取专栏的列表,刷新列表页分析接口的请求 sql
数据库表里
通过咱们对接口的分析,得出:得到数据专栏的api
即是这个数据库
https://timeline-merger-ms.juejin.im/v1/get_entry_by_self?src=web&uid=5cf00b7c6fb9a07eba2c226f&device_id=1580692913721&token=eyJhY2Nlc3NfdG9rZW4iOiJqa3FzYTJaUzB3cTY3VVBoIiwicmVmcmVzaF90b2tlbiI6ImJrcG9LMnAyaUlSUFRvSFUiLCJ0b2tlbl90eXBlIjoibWFjIiwiZXhwaXJlX2luIjoyNTkyMDAwfQ%3D%3D&targetUid=5cf00b7c6fb9a07eba2c226f&type=post&limit=20&order=createdAt
复制代码
发现能够直接浏览器
地址栏查询,目前来看的话只有14条,由于我才刚刚写14
条 npm
那咱们就在 node 环境下跑一下这个接口
async function getEntryBySelf() {
let reqUrl = `https://timeline-merger-ms.juejin.im/v1/get_entry_by_self?src=web&uid=5cf00b7c6fb9a07eba2c226f&device_id=1580692913721&token=eyJhY2Nlc3NfdG9rZW4iOiJqa3FzYTJaUzB3cTY3VVBoIiwicmVmcmVzaF90b2tlbiI6ImJrcG9LMnAyaUlSUFRvSFUiLCJ0b2tlbl90eXBlIjoibWFjIiwiZXhwaXJlX2luIjoyNTkyMDAwfQ%3D%3D&targetUid=5cf00b7c6fb9a07eba2c226f&type=post&limit=20&order=createdAt`;
const res = await axios.get(reqUrl);
const {
s,
m,
d: { total, entrylist }
} = res.data;
if (s === 1 && m === "ok") {
// 请求成功
return entrylist;
} else {
return `reqErr`;
}
}
复制代码
咱们经过使用node
环境而后操做数据库,在这篇文章就简单的说一下数据相关的操做,后续会持续更新,但愿可以关注笔者github
// 配置对象
const config = {
host: "localhost", // 主机地址
user: "root", // 数据库用户
password: "123456", // 密码
database: "blog" // 数据库
};
// 创建链接
let con = mysql.createConnection(config);
con.connect(err => {
if (err) {
console.log(`数据库创建失败`);
}
});
复制代码
在blog
数据库新建zhuan_lan
表用来存放掘金专栏的文章,并初始化一些字段,这里与爬取的数据字段名大体一致
// 数据插入数据库
// let testSql = "INSERT INTO zhuan_lan (collectionCount,commentsCount,originalUrl,createdAt,screenshot,content,titlte,category,viewsCount,summaryInfo) VALUES (21,2121,'212','212','212','212','212','221','2121','212')";
let iblogSql =
"INSERT INTO zhuan_lan (collectionCount,commentsCount,originalUrl,createdAt,screenshot,content,titlte,category,viewsCount,summaryInfo) VALUES (?,?,?,?,?,?,?,?,?,?)";
// 插入数据
con.query(iblogSql, arrData, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(`插入成功`);
}
});
复制代码
假若对爬虫
感兴趣的话,能够多多交流。本篇全部完整代码在样小样童鞋的day-up
仓库
day-up/nodeDemos/spider-demo/
复制代码
提问 有个问题请教一下:把平常的小案例放在一个仓库里,是否是对你点赞有影响