Spider Admin Pro

Github: https://github.com/mouday/spider-admin-pro

Gitee: https://gitee.com/mouday/spider-admin-pro

Pypi: https://pypi.org/project/spider-admin-pro

  • 目录

    • 简介
    • 安装启动
    • 配置参数
    • 部署优化
    • 使用扩展
    • 技术栈
    • 项目结构
    • 经验总结
    • TODO
    • 项目赞助
    • 交流沟通
    • 项目截图

简介

Spider Admin Pro 是Spider Admin的升级版

  1. 简化了一些功能;
  2. 优化了前端界面,基于Vue的组件化开发;
  3. 优化了后端接口,对后端项目进行了目录划分;
  4. 整体代码利于升级维护。
  5. 目前仅对Python3进行了支持

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9m5GDiK3-1649514857795)(https://github.com/mouday/spider-admin-pro/raw/master/doc/img/spider-admin-pro.png)]

安装启动

本项目基于Python3.7.0 开发,所以推荐使用Python3.7.0及其以上版本

方式一:

$ pip3 install spider-admin-pro$ python3 -m spider_admin_pro.run

方式二:

$ git clone https://github.com/mouday/spider-admin-pro.git$ python3 spider_admin_pro/run.py

配置参数

配置优先级:

yaml配置文件 >  env环境变量 > 默认配置

1、默认配置


# flask 服务配置
PORT = 5002
HOST = '127.0.0.1'# 登录账号密码
USERNAME = admin
PASSWORD = "123456"
JWT_KEY = FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0=# token过期时间,单位天
EXPIRES = 7# scrapyd地址, 结尾不要加斜杆
SCRAPYD_SERVER = 'http://127.0.0.1:6800'# 调度器 调度历史存储设置
# mysql or sqlite and other, any database for peewee support
SCHEDULE_HISTORY_DATABASE_URL = 'sqlite:///dbs/schedule_history.db'# 调度器 定时任务存储地址
JOB_STORES_DATABASE_URL = 'sqlite:///dbs/apscheduler.db'# 日志文件夹
LOG_DIR = 'logs'

2、env环境变量

在运行目录新建 .env 环境变量文件,默认参数如下

注意:为了与其他环境变量区分,使用SPIDER_ADMIN_PRO_作为变量前缀

如果使用python3 -m 运行,需要将变量加入到环境变量中,运行目录下新建文件env.bash

注意,此时等号后面不可以用空格

# flask 服务配置
export SPIDER_ADMIN_PRO_PORT=5002
export SPIDER_ADMIN_PRO_HOST='127.0.0.1'# 登录账号密码
export SPIDER_ADMIN_PRO_USERNAME='admin'
export SPIDER_ADMIN_PRO_PASSWORD='123456'
export SPIDER_ADMIN_PRO_JWT_KEY='FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0='

增加环境变量后运行

$ source env.bash$ python3 -m spider_admin_pro.run

[注意]:

为了简化配置复杂度,方式2:env环境变量,计划将在下一版本移除

3、自定义配置

在运行目录下新建config.yml 文件,运行时会自动读取该配置文件

eg:

# flask 服务配置
PORT: 5002
HOST: '127.0.0.1'# 登录账号密码
USERNAME: admin
PASSWORD: "123456"
JWT_KEY: "FU0qnuV4t8rr1pvg93NZL3DLn6sHrR1sCQqRzachbo0="# token过期时间,单位天
EXPIRES: 7# scrapyd地址, 结尾不要加斜杆
SCRAPYD_SERVER: "http://127.0.0.1:6800"# 日志文件夹
LOG_DIR: 'logs'

生成jwt key

$ python -c 'import base64;import os;print(base64.b64encode(os.urandom(32)).decode())'

部署优化

1、使用 Gunicorn管理应用

Gunicorn文档:https://docs.gunicorn.org/

# 启动服务
$ gunicorn --config gunicorn.conf.py spider_admin_pro.run:app

注意:

如果使用了 Gunicorn 那么 配置文件中的 PORTHOST 将会不生效

如果需要修改port 和host, 需要修改gunicorn.conf.py 文件中的 bind

一个配置示例:gunicorn.conf.py

# -*- coding: utf-8 -*-"""
$ gunicorn --config gunicorn.conf.py spider_admin_pro.run:app
"""import multiprocessing
import osfrom gevent import monkeymonkey.patch_all()# 日志文件夹
LOG_DIR = 'logs'if not os.path.exists(LOG_DIR):os.mkdir(LOG_DIR)def resolve_file(filename):return os.path.join(LOG_DIR, filename)def get_workers():return multiprocessing.cpu_count() * 2 + 1# daemon = True
daemon = False  # 使用supervisor不能是后台进程# 进程名称
proc_name = "spider-admin-pro"# 启动端口
bind = "127.0.0.1:5001"# 日志文件
loglevel = 'debug'
pidfile = resolve_file("gunicorn.pid")
accesslog = resolve_file("access.log")
errorlog = resolve_file("error.log")# 启动的进程数
# workers = get_workers()
workers = 2
worker_class = 'gevent'# 启动时钩子
def on_starting(server):ip, port = server.address[0]print('server.address:', f'http://{ip}:{port}')

注意:

使用gunicorn部署,会启动多个worker, 这样apscheduler会启动多个,可能会出现重复运行的情况(暂时没出现)

这种情况下,调度器控制开关不要动,以免启动不了;如果出现了定时任务不执行,可尝试重启整个服务

2、使用supervisor管理进程

文档:http://www.supervisord.org

spider-admin-pro.ini

[program: spider-admin-pro]
directory=/spider-admin-pro
command=/usr/local/python3/bin/gunicorn --config gunicorn.conf.py spider_admin_pro.run:appstdout_logfile=logs/out.log
stderr_logfile=logs/err.logstdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 0
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=0

3、使用Nginx转发请求

server {listen 80;server_name _;access_log  /var/log/nginx/access.log;error_log  /var/log/nginx/error.log;location / {proxy_pass         http://127.0.0.1:5001/;proxy_redirect     off;proxy_set_header   Host                 $host;proxy_set_header   X-Real-IP            $remote_addr;proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;proxy_set_header   X-Forwarded-Proto    $scheme;}
}

使用扩展

收集运行日志:scrapy-util 可以帮助你收集到程序运行的统计数据

技术栈:

1、前端技术:

功能 第三方库及文档
基本框架 vue
仪表盘图表 echarts
网络请求 axios
界面样式 Element-UI

2、后端技术

功能 第三方库及文档
接口服务 Flask
任务调度 apscheduler
scrapyd接口 scrapyd-api
网络请求 session-request
ORM peewee
jwt jwt
系统信息 psutil

项目结构

【公开仓库】基于Flask的后端项目spider-admin-pro: https://github.com/mouday/spider-admin-pro

【私有仓库】基于Vue的前端项目spider-admin-pro-web: https://github.com/mouday/spider-admin-pro-web

spider-admin-pro项目主要目录结构:

.
├── run.py        # 程序入口
├── api           # Controller层
├── service       # Sevice层
├── model         # Model层
├── exceptions    # 异常
├── utils         # 工具类
└── web           # 静态web页

经验总结

Scrapyd 不能直接暴露在外网

  1. 其他人通过deploy部署可以将代码部署到你的机器上,如果是root用户运行,还会在你机器上做其他的事情
  2. 还有运行日志中会出现配置文件中的信息,存在信息泄露的危险

二次开发

git clone https://github.com/mouday/spider-admin-pro.gitcd spider-admin-propython3 dev.py

安装升级

pip3 install -U spider-admin-pro -i https://pypi.org/simple

spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项目查看 和 爬虫任务定时调度的可视化管理工具相关推荐

  1. Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理

    Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...

  2. Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具

    Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...

  3. expert个人版 sqlite_SQLite可视化管理工具(SQLite Expert Pro)

    SQLite可视化管理工具,允许用户在 SQLite 服务器上执行创建.编辑.复制.提取等操作.SQLite Expert Professional是一款可视化的数据库管理工具,允许用户在 SQLit ...

  4. python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较

    爬虫框架 *爬虫框架是实现爬虫功能的一个软件结构和功能组件集合 *爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫 Scrapy爬虫框架结构 "5+2"结构 Spiders(用户 ...

  5. python 爬虫 scrapy 和 requsts 哪个快_Python爬虫:Scrapy研读之Request/Reponse

    本帖最后由 shenzhenwan10 于 2016-6-17 07:52 编辑 1,引言 在前一篇Scrapy:python3下的第一次运行测试 中,我们以官网的tutorial为例,成功的运行了S ...

  6. ES集群可视化管理工具-Cerebro

    文章目录 1. Cerebro简介 2. 环境要求 3. Cerebro安装 4. 访问Cerebro 5. 面板介绍 6. LDAP集成 7. Docker方式安装 1. Cerebro简介 Cer ...

  7. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  8. 爬虫----Scrapy框架

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  9. Python爬虫——Scrapy 的基本使用

    文章目录 Python爬虫--Scrapy 的基本使用 1.创建 Scrapy 爬虫项目 2.Scrapy-创建爬虫文件 3.Scrapy-运行爬虫文件 Python爬虫--Scrapy 的基本使用 ...

  10. Python 爬虫 性能 相关( asyncio 模块 --- 高性能爬虫 )

    From:https://www.cnblogs.com/bravexz/p/7741633.html 爬虫应用 asyncio 模块 ( 高性能爬虫 ):https://www.cnblogs.co ...

最新文章

  1. ---西游记~~中的公司政治
  2. 计算机基础知识第四章测试,计算机基础知识测试题第四章
  3. python算法很难吗_python 机器学习难吗?
  4. Rsync+inotify搭建实时同步系统
  5. 将所有单个json标注文件合并成一个总的json标注文件(COCO数据集格式)
  6. 华为手机怎么设置应用不全屏显示_手机投屏智能电视画面比例不合适怎么办?...
  7. 【Recat 应用】之 React 脚手架
  8. python requests下载图片_Python使用urllib库、requests库下载图片的方法比较
  9. java并发编程的艺术——第四章总结
  10. Spring 测试代码的写法以及一个c3p0的错误
  11. 数据驱动型文化是大数据成功的关键
  12. 男生一些必备APP的分享
  13. linux系统中mywho命令,linux查看在线用户 who命令参数及用法
  14. 青岛大学计算机科学技术学院图灵班,北京大学计算机实验班(图灵班)介绍
  15. Tomcat:-Djava.net.preferIPv4Stack=true只支持ipv4
  16. android CheckBoxPreference title,summy字体大小设置
  17. visio2016安装包中文专业版下载及安装教程
  18. Zuul微服务网关、容错与监控、Zuul路由端点、路由配置、Zuul上传文件、Zuul过滤器、Zuul异常处理、Zuul回退、Zuul聚合微服务
  19. 封基表现继续好于大盘
  20. 【数据结构与算法】一篇文章彻底搞懂二分查找(思路图解+代码优化)两种实现方式,递归与非递归

热门文章

  1. Emitter使用方法
  2. Long与Integer的转换
  3. BUUCTF中的reverse2
  4. 等到花儿也谢了的await
  5. 正式赛1010 羊村村长选举
  6. Acwing-4656. 技能升级
  7. 互联网金融常见的一些业务
  8. 计算机主板清理,电脑主板脏了如何清洗电脑主板才是正确
  9. 蓝海卓越无线运营方案简述
  10. Elasticsearch之快速入门篇(个人笔记)