• Stars
    star
    559
  • Rank 79,673 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项目查看 和 爬虫任务定时调度的可视化管理工具,SpiderAdmin的升级版

Spider Admin Pro

PyPI PyPI - Downloads PyPI - Python Version Docker Image Version (latest semver) Docker Pulls Build Status PyPI - License

简介

Spider Admin Pro 是Spider Admin的升级版,一个可视化的Scrapy爬虫管理平台,依赖于Scrapyd

安装启动

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

运行项目前,请先确保scrapyd服务已经启动

方式一:

$ python3 --version
Python 3.7.0

# 创建名为 venv 的虚拟环境
$ python3 -m venv venv

# 激活虚拟环境
$ source venv/bin/activate

# 安装spider-admin-pro
$ pip3 install spider-admin-pro

# 可选
$ pip3 install -U spider-admin-pro -i https://pypi.org/simple

# Linux macOS 运行启动
$ gunicorn 'spider_admin_pro.main:app'

# windows 环境使用waitress 替换 gunicorn
$ pip install waitress

$ waitress-serve --listen=127.0.0.1:8000 'spider_admin_pro.main:app'

方式二:

$ git clone https://github.com/mouday/spider-admin-pro.git

$ cd spider-admin-pro

# 安装依赖(建议:最好新建一个虚拟环境)
$ pip3 install -r requirements.txt 

# Linux/macOS 以开发模式运行
$ make dev

# windows 以开发模式运行
$ python3 dev.py

# 以生产模式运行
$ make pro

安装 scrapy 全家桶[可选]

pip install scrapy scrapyd scrapyd-client

方式三:

docker run -p 8000:8000 mouday/spider-admin-pro

配置参数

  • v2.0版本移除了.env环境变量配置方式,仅支持yaml格式配置
  • v2.0版本移除了PORTHOST配置项,推荐统一采用gunicorn 管理

Spider Admin Pro V1版本文档看这里

自定义配置

在运行目录下新建config.yml 文件,也就是执行启动命令的目录,运行时会自动读取该配置文件

例如

$ ls
config.yml

$ gunicorn 'spider_admin_pro.main:app'

强烈建议:修改密码和秘钥项

eg:

# 登录账号密码
USERNAME: admin
PASSWORD: "123456"

# scrapyd地址, 结尾不要加斜杆
SCRAPYD_SERVER: "http://127.0.0.1:6800"

使用扩展

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

技术栈:

1、前端技术:

功能 第三方库及文档
基本框架 vue2.js
仪表盘图表 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

备注:前端Vue项目,可入QQ群发送github用户名获取权限

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

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

经验总结

Scrapyd 不能直接暴露在外网

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

TODO

1. 补全开发文档

2. 支持命令行安装可用

3. 优化代码布局,提取公共库

4. 日志自动刷新

5. scrapy项目数据收集

[ok]6. 定时任务spider列左对齐,支持本地排序

[x]7. 调度器控制移除停止开启开关,只保留暂停继续

[x]8. 添加任务,默认项目名,关闭弹框取消form校验结果

[x]9. 统计的日志量太大,增加一个一个定时清理的功能

[x]10. 定时任务备份,不小心把任务清空

[x]11. 希望能加入更好的定时方式,类似 scrapyd_web那种定时

[x]12. 简单的爬虫不用非要去打包,比如我自己上传一个py文件,可以定时任务,脚本的方式运行

[x]13. 爬虫能配置带参数运行

交流沟通

关注本项目的小伙伴越来越多,为了更好地交流沟通,可以加入群聊

  • 一群: 1074075691(已满)
  • 二群: 864983297

问题:邀请码 答案:SpiderAdmin

联系作者

微信扫码二维码

项目赞助

日期 姓名 金额
2022-04-16 @realhellosunsun ¥188.00
2022-08-30 @yangxiaozhe13 ¥88.00
2022-09-01 @robot-2233 ¥88.00
2023-05-09 埃菲尔没有塔尖 ¥68.80

项目截图

安装升级

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

Stargazers over time

Stargazers over time

其他问题

1、windows系统 scrapyd 启动失败,可能缺少依赖pywin32

pip install pywin32

感谢@whobywind,提供的解决方案

2、网站有ip校验,刚访问几个请求就被禁止访问?

同一个ip可能有被封的风险,可以使用代理ip去请求,有免费和付费。

如果是个人使用,可以找一些免费的ip临时使用

如果是企业项目,可以使用付费代理ip

某爬虫大佬也推荐过一个不错的动态代理 云立方

找客服发送暗号:【爬虫推广】可以获取打折优惠

具体搭建方法在大佬的博客中有详尽说明:

使用 Tornado+Redis 维护 ADSL 拨号服务器代理池

如果有问题,可以加QQ群,群里的小伙伴会积极解答喔

3、为什么外网访问不到,如何修改端口号

增加--bind 参数

格式

--bind 监听地址:监听端口号

例如

# 启动运行
$ gunicorn 'spider_admin_pro.main:app'

# 支持外网可访问,云服务器(阿里云或腾讯云)需要设置安全组 
# 默认内网访问 --bind 127.0.0.1:8000
$ gunicorn --bind '0.0.0.0:8000' 'spider_admin_pro.main:app'

更多设置,可参考gunicorn

4、提示缺少libfile

群友 @Yuan、红尘美 提供的解决方法

安装依赖

yum install libffi-devel -y

更新日志

  • v2.0.3

    • 修复mysql作为后端存储的文档和登录bug
  • v2.0.2

    • 优化文档
    • 优化日志
  • v2.0.1

    • 优化前端界面在windows平台显示异常的问题
    • 修复前端调度日志 列表显示异常的问题
    • 优化定时任务添加,自动选中项目和爬虫
  • v2.0.0

    • 升级依赖 requirements.txt, Flask 1.0.3 升级为 2.2.2
    • 优化启动方式
    • 优化启动配置,移除PORTHOST 配置项
    • 移除.env环境变量配置,简化配置流程
    • 移除Flask配置读取,推荐使用gunicorn启动服务
  • 2021-09-03

    • [bugfix]修复【任务列表】运行中项目无法取消的bug
  • 2022-04-01

    • [bugfix] 当修改scrapyd的端口号后,在配置文件中指定scrapyd为修改后的端口号。配置文件不生效
    • 感谢:@洒脱的狂者 发现的问题及解决办法
  • 2022-05-27

    • [update] requirements.txt 文件中增加 flask_cors 依赖

社区其他优秀工具推荐

Spider Admin Pro vs. Spider Admin

  1. 简化了一些功能;
  2. 优化了前端界面,基于Vue的组件化开发;
  3. 优化了后端接口,对后端项目进行了目录划分;
  4. 整体代码利于升级维护。
  5. 目前仅对Python3进行了支持
  6. 路由统一管理
  7. 全局异常捕获
  8. 接口统一返回
  9. 前后端分离
  10. 可视化参数配置

More Repositories

1

wallpaper-database

wallpaper database
Python
202
star
2

SpiderAdmin

SpiderAdmin 一个集爬虫Scrapy+Scrapyd爬虫项目查看 和 爬虫任务定时调度的可视化管理工具
JavaScript
81
star
3

domain-admin-web

domain-admin-web
Vue
57
star
4

PageParser

网页解析器,用于网络爬虫解析页面, 不懂网页解析也能写爬虫
Python
41
star
5

chinesename

get a chinese name by random
Python
35
star
6

stock-open-api

股票数据接口
Python
34
star
7

today-news

通过抓取微信文章和今日头条新闻,打造一个自己的今日头条
Python
32
star
8

spider-admin-pro-web

Vue
23
star
9

coding-tree

程序员工作、学习笔记
21
star
10

mo-quarter-picker

一个基于 Vue 和 ElementUI 的季节范围选择器
Vue
21
star
11

echarts-map

echarts 用到的 map 地图文件
JavaScript
17
star
12

student-course-selection-system

SpringBoot+Vue 的学生选课管理系统源码
Vue
17
star
13

work-weixin-api

企业微信接口封装库
Python
9
star
14

MyBatis-demo

MyBatis-demo
Java
9
star
15

spring-boot-demo

Spring Boot Demo
JavaScript
8
star
16

TencentCaptcha

Tencent Captcha demo for Python Flask
HTML
7
star
17

hao123

程序员网址导航
Vue
7
star
18

FTPServer

一个支持多用户在线的FTP程序,实现上传下载等简单功能
Python
6
star
19

chrome-search-tool

a simple search tool for chrome extension
HTML
6
star
20

wallpaper

bing必应壁纸
Vue
6
star
21

vue-element-admin-demo

Vue
6
star
22

more-editor

a rich-text editor demo
JavaScript
6
star
23

ChooseCourseSys

选课系统
Python
6
star
24

browser_useragent

get a browser user_agent by random
Python
5
star
25

scrapy-util

scrapy_util
Python
5
star
26

scrapyd-api

Python
5
star
27

domain-admin-mini

mini h5 code for domain-admin
Vue
4
star
28

chinaarea

get a china area by province, city or county
Python
4
star
29

more-cdn

整合常用的js库,便于自建cdn
JavaScript
3
star
30

weixin-open-api

Python
3
star
31

vue-cdn-template

vue cdn template
JavaScript
3
star
32

Atm

ATM+购物车程序
Python
3
star
33

PyCase

a tool for camel case convert
Python
3
star
34

coder

parse browser header and cookie to json
Java
3
star
35

vue-excel

JavaScript
3
star
36

PyThink

simple CURD of mysql for python
Python
3
star
37

email_helper

email helper for simple send email and receive email of python
Python
3
star
38

StudentManagerSys

StudentManagerSystem
Python
3
star
39

china-calendar

china-calendar
Python
3
star
40

TodoList

使用Python后端实现的TotoList
Python
3
star
41

cron-admin

Cron Admin 基于Golang + React.js 的定时任务管理平台
Go
3
star
42

enterprise-website

enterprise-website企业官网布局实例
HTML
2
star
43

more-copy.js

copy template generate code file
JavaScript
2
star
44

vue-demo

JavaScript
2
star
45

miniprogram-validator

JavaScript
2
star
46

file-admin

file admin
Makefile
2
star
47

github-oauth-demo

Python
2
star
48

notifier

基于Golang的邮件通知服务
Go
2
star
49

session-request

Python
2
star
50

good-dev

一个基于webpack + react的chrome 插件
JavaScript
2
star
51

gt-project

get template project
Shell
2
star
52

ThinkPHP-Webpack-Template

ThinkPHP-Webpack-Template
PHP
2
star
53

LearningNote

LearningNote
JavaScript
2
star
54

mo-cache

a simple cache lib support memory、file、redis
Python
2
star
55

fastapi-demo

fastapi demo
CSS
2
star
56

MyQuery

一个MySQL快捷操作方式
Python
2
star
57

quick-env

运维脚本整合,快速部署运行环境
Shell
1
star
58

momo-util

js 常用工具方法整理
JavaScript
1
star
59

vue-condition-filter

vue-condition-filter
Vue
1
star
60

flask-controller

a extension for flask which can auto register route rule
Python
1
star
61

md5util

a python3 util for md5
Python
1
star
62

tools

a collections online tools
Vue
1
star
63

more-utils.js

a browser env util package
JavaScript
1
star
64

cator

a quick tool base dict for mysql and sqlite
Python
1
star
65

Django-website

Process management used Django
CSS
1
star
66

HttpServer

用于爬虫请求头测试的简单服务器,使用Python + Flask
Python
1
star
67

ElasticSearch-Head.crx

1
star
68

consolecolor

consolecolor for pycharm or liunx console
Python
1
star
69

todo-list

Todo List Demo
Java
1
star
70

PureMySQL

一个MySQL简单操作方式
Python
1
star
71

more-logger.js

more-logger
JavaScript
1
star
72

moon-cake

make a moon cake online
Vue
1
star
73

FreeIpProxy

通过抓取免费代理ip维护一个有效的proxy代理池
Python
1
star
74

jest-start

jest quick start template
JavaScript
1
star
75

weixin-app-demo

简单的微信小程序电影列表+详情,主要是实现功能,界面没有特别处理
JavaScript
1
star
76

webpack-simple-template

webpack simple template
JavaScript
1
star
77

spring-struts-mybatis-demo

ssm整合示例
Java
1
star
78

Clask

a http client based on requests just like Flask
Python
1
star
79

tampermonkey-script

tampermonkey-script
JavaScript
1
star
80

flask-template

flask template
Python
1
star
81

shell-runner

shell-runner
Go
1
star
82

Mo-Blog

a demo for SpringBoot + Vue + Flask
JavaScript
1
star
83

article-admin-web

article-admin-web
TypeScript
1
star
84

article-admin

article-admin
Go
1
star
85

front-end-demo

front-end-demo
HTML
1
star