Node | 自我爬蟲掘金專欄文章

寫在前面

  • 轉載請標註來源(請尊重原創及想法思路)
  • 本篇的 demo 案例僅做爲演示案例,練習案例,禁止商用
  • 若有問題致郵:youngwanlia@gmail.com

需求概述

因爲後續會搭建一個 全棧我的網站,目前暫定放一些技術文檔 全民K歌資源 B站製做的視頻,也打算把博客集成在網站中。因此本篇就來分享一下node爬蟲。 總體這個網站分爲三個部分node

  • 音樂 :第三方平臺本身沒事錄的歌
  • 視頻 :第三方平臺剪輯的視頻
  • 文章 :日常沒事的技術文檔

這篇就打算先爬蟲一些數據,暫且放在本地的數據庫裏mysql

前期準備

俗話說,工欲善其事,必先利其器,那麼前期準備無非即是jquery

  • 參閱文檔
  • 環境工具

必閱文檔

至於爬個蟲爲何還須要jQuery 呢,請接着閱讀web

環境準備

  • node && nodemon
npm install -g nodemon
複製代碼

20200220184917.png

  • axios
yarn add  axios
複製代碼
  • mysql
yarn add mysql
複製代碼
  • cheerio
yarn add cheerio
複製代碼

需求分析

獲取專欄的列表,刷新列表頁分析接口的請求 sql

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條,由於我纔剛剛寫14npm

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

本章小結

假若對爬蟲感興趣的話,能夠多多交流。本篇全部完整代碼在樣小樣童鞋的day-up倉庫

day-up/nodeDemos/spider-demo/
複製代碼

提問 有個問題請教一下:把平常的小案例放在一個倉庫裏,是否是對點贊有影響

相關文章
相關標籤/搜索