Z-Blog 爬虫 node实现
生活随笔
收集整理的這篇文章主要介紹了
Z-Blog 爬虫 node实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Z-Blog 爬蟲 node實現 目前正在連載更新中
一、需求
幫朋友建站,指定用Z-Blog,安裝后,我發現采集文章不便,所以準備寫一個node爬蟲,實現對友站文章的自動采集。
二、實現之前的思考
1、 熟悉Z-Blog數據庫
Z-Blog使用mysql數據庫,所以我需要知道Z-Blog數據庫結構。
2、node工具庫選型
請求庫想用superagent,規則提取用cheerio,并發控制用async,mysql數據庫操作用sequelize
3、后續
第一版,簡單寫,滿足自己的功能需求就行。若Z-Blog站點看到我文章,覺得也有爬蟲需求,我會嘗試寫一個針對Z-Blog的采集框架。
三、開工 項目地址 z-blog-spider
1、初始化項目
yarn init2、安裝工具庫
yarn add superagent cheerio sequelize mysql23、創建配置文件config.js
const Sequelize = require('sequelize'); module.exports.db_config = {database: 'qy',username: 'root',password: 'root',config: {host: '127.0.0.1', // 數據庫地址dialect: 'mysql', // 指定連接的數據庫類型operatorsAliases: Sequelize.Op,pool: {max: 5, // 連接池中最大連接數量min: 0, // 連接池中最小連接數量idle: 10000 // 如果一個線程 10 秒鐘內沒有被使用過的話,那么就釋放線程}} }4、創建文件db.js測試數據庫連通性(事先創建mode文件夾用于存放數據模型)
const fs = require('fs'); const path = require('path'); const Sequelize = require('sequelize');const { db_config } = require('./config');const sequelize = new Sequelize(db_config.database, db_config.username, db_config.password, db_config.config);sequelize.authenticate().then(() => {console.log('數據庫連接成功');}).catch(err => {console.error('連接數據庫出錯', err);}); const db = {};fs.readdirSync(path.join(__dirname, './model')).forEach(function (file) {const model = sequelize.import(path.join(__dirname, file));db[model.name] = model;});Object.keys(db).forEach(function (modelName) {if ('classMethods' in db[modelName].options) {if ('associate' in db[modelName].options['classMethods']) {db[modelName].options.classMethods.associate(db);}} });db.sequelize = sequelize; db.Sequelize = Sequelize;module.exports = db;5、創建index.js文件,程序入口
const db = require('./db.js')打開命令行運行node index.js
不出意外會打印數據庫連接成功,說明準備工作完成。
總結
以上是生活随笔為你收集整理的Z-Blog 爬虫 node实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子弹类
- 下一篇: Flask之flask-session