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 init

2、安装工具库

yarn add superagent cheerio sequelize mysql2

3、创建配置文件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实现相关推荐

  1. 【Part2】用JS写一个Blog (node + vue + mongoDB)

    [Part1]用JS写一个Blog (node + vue + mongoDB) 上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写.实现mongoDB数据库的连接. 整理后端目录 下面是通 ...

  2. nodejs爬虫 node + cheerio 爬取滚动加载页面

    最近在学习nodejs,然后了解到nodejs也可以做爬虫就试了一试还可以就记录一下 爬取爱奇艺首页视频标题 用到的是node+cheerio,cheerio是jq核心功能的一个快速灵活而又简洁的实现 ...

  3. 【Part1】用JS写一个Blog(node + vue + mongoDB)

    学习JS也有一段时间了,准备试着写一个博客项目,前后端分离开发,后端用node只提供数据接口,前端用vue-cli脚手架搭建,路由也由前端控制,数据异步交互用vue的一个插件vue-resourse来 ...

  4. node爬虫实现文件下载,访问网址

    node爬虫实现文件下载, 访问网址 试了下 Node写爬虫,访问速度好像比Java快好多. 同一目录下新建index.js和model.js index.js const model = requi ...

  5. Node学习记录: 图片爬虫

    一 const request = require('request'); request 对http进行封装的npm request(url,(err,req)=>{ let body=req ...

  6. Node: Puppeteer + 图像识别 实现百度指数爬虫

    之前看过一篇脑洞大开的文章,介绍了各个大厂的前端反爬虫技巧,但也正如此文所说,没有100%的反爬虫方法,本文介绍一种简单的方法,来绕过所有这些前端反爬虫手段. 下面的代码以百度指数为例,代码已经封装成 ...

  7. Node.js爬虫一站到底系列先导篇

    前言: 在web编程课上,老师布置了爬虫任务,而没有任何经验和相关方面知识的小白简直一头雾水,不知道该如何下手.一开始抱着一本厚厚的犀牛书啃了好几天,本以为对Javascipt语法有一定了解后便可以自 ...

  8. 104个实用网络爬虫项目资源整理(超全)

    *不带括弧注明的默认都是 Python爬虫 因为头条对外链不支持等其他原因,上图所有爬虫项目地址可在实验楼微信公众号(实验楼)后台回复关键字 "爬虫" 获取.以下为字母顺序的列表: ...

  9. python爬虫获取的网页数据为什么要加[0-python3爬虫爬取网页思路及常见问题(原创)...

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

最新文章

  1. ftp服务器版本信息可被获取,ftp服务器版本信息可被获取
  2. mysql防止从节点可写数据_mysql 主从数据不一致 Slave_SQL_Running: No 解决方法
  3. 老旧的金融机构,是时候赶赶云计算的时髦了
  4. 进程通信学习笔记(记录上锁)
  5. HTML常用基础标签
  6. Python基础概念_5_函数
  7. processing python模式_详解python之多进程和进程池(Processing库)
  8. DevExpress控件使用小结
  9. float right不生效_【工具篇】程序员不愿意写 PPT 是姿势不对?
  10. python多进程用不了_Python多进程相关的坑
  11. python动态创建变量
  12. android 发送按键 0,android monitor tool (8.0 模拟发送按键及触摸屏事件实现)
  13. python执行多个py文件_【经验分享】如何同时运行多个python脚本
  14. 编译原理-语法分析详解
  15. python入门自学软件手机版_python编程入门
  16. 前有狗屁不通文章生成器 | 后有申论生成器
  17. Xcode(OC):control reaches end of non-void function
  18. 【基于ARM cortex-A53的音视频】
  19. 微服务的架构模式:一个服务一个数据库模式
  20. Just another Robbery (概率DP)

热门文章

  1. [js] json和对象有什么区别?
  2. [vue] 从0到1自己构架一个vue项目,说说有哪些步骤、哪些重要插件、目录结构你会怎么组织
  3. 前端学习(2796):实现左侧数据渲染和点击高亮
  4. 工作183:动态渲染数据 数据在数字字典里面
  5. 26.idea导入jar包
  6. 实例23:python
  7. Java游戏聊斋聂小倩_《聊斋倩女幽魂》聂小倩教你赢得战斗
  8. java 事件分发线程_深入浅出Java多线程(2)-Swing中的EDT(事件分发线程) [转载]...
  9. 对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击
  10. JMeter - 如何创建可重用和模块化测试脚本