SpiderAdmin
功能介绍
-
对Scrapyd 接口进行可视化封装,对Scrapy爬虫项目进行删除 和 查看
-
并没有实现修改,添加功能, 部署推荐使用
$ scrapyd-deploy -a
- 对爬虫设置定时任务,支持apscheduler 的3中方式和随机延时,共计4中方式
- 单次运行 date
- 周期运行 corn
- 间隔运行 interval
- 随机运行 random
- 基于Flask-BasicAuth 做了简单的权限校验
启动运行
$ pip3 install -U spideradmin
$ spideradmin init # 初始化,可选配置,也可以使用默认配置
$ spideradmin # 启动服务
开启站点认证
修改启动目录下配置文件config.py
# 如果为 True 整个站点都验证, 默认不验证
BASIC_AUTH_FORCE = True
页面截图
TODO
增加登录页面做权限校验增加定时设置的多样性增加定时随机运行
部署Scrapyd注意版本问题
- Scrapyd==1.2.0
- Scrapy==1.6.0
- Twisted==18.9.0
启用执行结果扩展
安装依赖
pip install PureMySQL
新建数据表
CREATE TABLE `log_spider` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`spider_name` varchar(50) DEFAULT NULL,
`item_count` int(11) DEFAULT NULL,
`duration` int(11) DEFAULT NULL,
`log_error` int(11) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='爬虫执行结果统计'
1、在scrapy项目中添加数据收集扩展文件
item_count_extension.py
# -*- coding: utf-8 -*-
import logging
from scrapy import signals
from puremysql import PureMysql
from datetime import datetime
class SpiderItemCountExtension(object):
# 设置为数据库链接url eg: mysql://root:123456@127.0.0.1:3306/mydata
ITEM_LOG_DATABASE_URL = None
# 设置数据表
ITEM_LOG_TABLE = "log_spider"
@classmethod
def from_crawler(cls, crawler):
ext = cls()
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
return ext
def spider_closed(self, spider, reason):
stats = spider.crawler.stats.get_stats()
scraped_count = stats.get("item_scraped_count", 0)
dropped_count = stats.get("item_dropped_count", 0)
log_error = stats.get("log_count/ERROR", 0)
start_time = stats.get("start_time")
finish_time = stats.get("finish_time")
duration = (finish_time - start_time).seconds
count = scraped_count + dropped_count
logging.debug("*" * 50)
logging.debug("* {}".format(spider.name))
logging.debug("* item count: {}".format(count))
logging.debug("*" * 50)
item = {
"spider_name": spider.name,
"item_count": count,
"duration": duration,
"log_error": log_error,
"create_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
mysql = PureMysql(db_url=self.ITEM_LOG_DATABASE_URL)
table = mysql.table(self.ITEM_LOG_TABLE)
table.insert(item)
mysql.close()
2、scrapy项目启用扩展 settings.py
EXTENSIONS = {
# 'scrapy.extensions.telnet.TelnetConsole': None,
"item_count_extension.SpiderItemCountExtension": 100
}
3、配置相同的db_url default_config.py
ITEM_LOG_DATABASE_URL = "mysql://root:123456@127.0.0.1:3306/mydata"
ITEM_LOG_TABLE = "log_spider"
更新日志
| 版本 | 日期 | 描述 |
|---|---|---|
| 0.0.17 | 2019-07-02 | 优化文件,优化随机调度,增加调度历史统计和可视化 |
| 0.0.20 | 2019-10-08 | 增加执行结果统计 |
| 0.0.29 | 2020-03-25 | 优化刷新显示,停留在当前页面下 |
Metadata
Release files for SpiderAdmin 0.0.32
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| SpiderAdmin-0.0.32.tar.gz | 1.7 MB | Without provenance | Details for SpiderAdmin-0.0.32.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| SpiderAdmin-0.0.32-py3-none-any.whl | Python 3 | none | any | Details for SpiderAdmin-0.0.32-py3-none-any.whl |
Total release size: 2.3 MB
Release files / SpiderAdmin-0.0.32.tar.gz
| Download URL | SpiderAdmin-0.0.32.tar.gz |
|---|---|
| Size | 1.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbe9073ba9fde03934e36d41380cba0a1e77220c6b8a856dce2d14d567373534
|
|
BLAKE2b-256 checksum How to use checksums |
74d1da7c1225c9529dce20e296c63640e91ce3dfc4a10c3dec537b8eb7308d33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0
|
Release files / SpiderAdmin-0.0.32-py3-none-any.whl
| Download URL | SpiderAdmin-0.0.32-py3-none-any.whl |
|---|---|
| Size | 661.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11eb635e396ad05d8a5a3bac683f21f00874b70272019f215e6781e36b1e5b7f
|
|
BLAKE2b-256 checksum How to use checksums |
aaa994c125d37ebeb7eb07b15b66b4ee801ef23537dbdb0f8f7ba38d431ca611
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.0
|
Security for SpiderAdmin 0.0.32
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.