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/
複製代碼
提問 有個問題請教一下:把平常的小案例放在一個倉庫裏,是否是對你點贊有影響