Z-Blog 爬虫 node实现
Z-Blog 爬蟲 node實(shí)現(xiàn) 目前正在連載更新中
一、需求
幫朋友建站,指定用Z-Blog,安裝后,我發(fā)現(xiàn)采集文章不便,所以準(zhǔn)備寫一個(gè)node爬蟲,實(shí)現(xiàn)對(duì)友站文章的自動(dòng)采集。
二、實(shí)現(xiàn)之前的思考
1、 熟悉Z-Blog數(shù)據(jù)庫(kù)
Z-Blog使用mysql數(shù)據(jù)庫(kù),所以我需要知道Z-Blog數(shù)據(jù)庫(kù)結(jié)構(gòu)。
2、node工具庫(kù)選型
請(qǐng)求庫(kù)想用superagent,規(guī)則提取用cheerio,并發(fā)控制用async,mysql數(shù)據(jù)庫(kù)操作用sequelize
3、后續(xù)
第一版,簡(jiǎn)單寫,滿足自己的功能需求就行。若Z-Blog站點(diǎn)看到我文章,覺得也有爬蟲需求,我會(huì)嘗試寫一個(gè)針對(duì)Z-Blog的采集框架。
三、開工 項(xiàng)目地址 z-blog-spider
1、初始化項(xiàng)目
yarn init2、安裝工具庫(kù)
yarn add superagent cheerio sequelize mysql23、創(chuàng)建配置文件config.js
const Sequelize = require('sequelize'); module.exports.db_config = {database: 'qy',username: 'root',password: 'root',config: {host: '127.0.0.1', // 數(shù)據(jù)庫(kù)地址dialect: 'mysql', // 指定連接的數(shù)據(jù)庫(kù)類型operatorsAliases: Sequelize.Op,pool: {max: 5, // 連接池中最大連接數(shù)量min: 0, // 連接池中最小連接數(shù)量idle: 10000 // 如果一個(gè)線程 10 秒鐘內(nèi)沒有被使用過的話,那么就釋放線程}} }4、創(chuàng)建文件db.js測(cè)試數(shù)據(jù)庫(kù)連通性(事先創(chuàng)建mode文件夾用于存放數(shù)據(jù)模型)
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('數(shù)據(jù)庫(kù)連接成功');}).catch(err => {console.error('連接數(shù)據(jù)庫(kù)出錯(cuò)', 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、創(chuàng)建index.js文件,程序入口
const db = require('./db.js')打開命令行運(yùn)行node index.js
不出意外會(huì)打印數(shù)據(jù)庫(kù)連接成功,說明準(zhǔn)備工作完成。
總結(jié)
以上是生活随笔為你收集整理的Z-Blog 爬虫 node实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子弹类
- 下一篇: Flask之flask-session