您的当前位置:首 页 >> 信息中心

全民k歌爬虫by,node结合cheerio爬虫小案例

发布日期:2021-09-28 19:14:16 作者: 点击:
写在前面

最近更新时间 2020-11-16代码地址 github.com/yayxs/node-…

需求概述

由于后续会搭建一个 全栈个人网站,目前暂定放一些技术文档 全民K歌资源 B站制作的视频,也打算把博客集成在网站中。所以本篇就来分享一下node爬虫。整体这个网站分为三个部分

音乐 :第三方平台自己没事录的歌视频 :第三方平台剪辑的视频文章 :平常没事的技术文档

这篇就打算先爬虫一些数据,暂且放在本地的数据库里

前期准备

俗话说,工欲善其事,必先利其器,那么前期准备无非便是

参阅文档环境工具必阅文档

Node.js v12.16.0 文档

关于node这份文档,咱们直接读中文文档也行,我觉得

jQuery 一个中文文档,在线可以查看一些 jQuery 的 api

至于爬个虫为什么还需要jQuery 呢,请接着阅读

环境准备node && nodemonnpm install -g nodemon复制代码

20200220184917.png

axiosyarn addaxios复制代码mysqlyarn add mysql复制代码cheerioyarn add cheerio复制代码需求分析

获取专栏的列表,刷新列表页分析接口的请求20200220204021.png爬取相关的数据,然后存入数据库表里

经过我们对接口的分析,得出:获得数据专栏的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条20200220204554.png

那我们就在 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`;}}复制代码

20200220210104.png

MySql 结合 Node

我们通过使用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表用来存放掘金专栏的文章,并初始化一些字段,这里与爬取的数据字段名大致一致

20200222190951.png

插入数据库// 数据插入数据库// 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(`插入成功`);}});复制代码

20200222195953.png

插入数据库

20200222200348.png