前言
最近發(fā)現(xiàn)了一個spdierkeeper的庫,這個庫的主要用途是在于.配合這scrpyd管理你的爬蟲,支持一鍵式部署,定時采集任務(wù),啟動,暫停等一系列的操作.
簡單來說將scrapyd的api進(jìn)行封裝,最大限度減少你跟命令行交互次數(shù).不得說這個是很棒的事情.
https://github.com/DormyMo/SpiderKeeper SpiderKeeper的github連接
環(huán)境配置
由于 scrapyd
是基于python3+
以上的版本兼容性較好,所以我們需要的環(huán)境為
- python3.4+
- scrapyd
- scrapy & scrapy相關(guān)的庫
- scrapy_reids 如果缺少這個在部署任務(wù)會報錯 (Reids.KeyErroe:'xxx'),
xxx
我們部署的任務(wù). - SpiderKeeper `pip install spiderkeeper' 就可以安裝.
啟動&配置
安裝完成之后,便可以啟動服務(wù)器了.博主本人使用的是ubuntu,所以就以ubuntu為例,win&macos進(jìn)本一樣.
單臺服務(wù)器
sudo spiderkeeper
# 啟動單臺服務(wù)器,默認(rèn)啟動本地的 http://localhost:6800 scrapyd的服務(wù) | spiderkeeper的默認(rèn)端口為5000.
連接多臺scrapyd服務(wù)器.
在分布式中我們的服務(wù)器中肯定不止一臺,使用spiderkeeper可以很好的解決這個問題
sudo spiderkeeper --server=http://localhost:6800 --server=http://111.111.111.111:6800
#啟動一個spiderkeeper可以同時部署兩臺服務(wù)器的spider
更改用戶名&密碼&更改端口號
config.py
更改用戶名&密碼
# Statement for enabling the development environment
import os
DEBUG = True
# Define the application directory
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(os.path.abspath('.'), 'SpiderKeeper.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
DATABASE_CONNECT_OPTIONS = {}
# Application threads. A common general assumption is
# using 2 per available processor cores - to handle
# incoming requests using one and performing background
# operations using the other.
THREADS_PER_PAGE = 2
# Enable protection agains *Cross-site Request Forgery (CSRF)*
CSRF_ENABLED = True
# Use a secure, unique and absolutely secret key for
# signing the data.
CSRF_SESSION_KEY = "secret"
# Secret key for signing cookies
SECRET_KEY = "secret"
# log
LOG_LEVEL = 'INFO'
# spider services
SERVER_TYPE = 'scrapyd'
SERVERS = ['http://localhost:6800']
# basic auth 這里更改用戶名&密碼
NO_AUTH = False
BASIC_AUTH_USERNAME = 'admin'
BASIC_AUTH_PASSWORD = 'admin'
BASIC_AUTH_FORCE = True
run.py
更改端口號
def parse_opts(config):
parser = OptionParser(usage="%prog [options]",
description="Admin ui for spider service")
parser.add_option("--host",
help="host, default:0.0.0.0",
dest='host',
default='0.0.0.0')#bind ip 綁定ip 默認(rèn)全部人可以訪問
parser.add_option("--port",
help="port, default:5000",
dest='port',
type="int",
default=5000)#默認(rèn)端口號5000 可以根據(jù)你的需求設(shè)計
parser.add_option("--username",
help="basic auth username ,default: %s" % config.get('BASIC_AUTH_USERNAME'),
dest='username',
default=config.get('BASIC_AUTH_USERNAME'))
parser.add_option("--password",
help="basic auth password ,default: %s" % config.get('BASIC_AUTH_PASSWORD'),
dest='password',
default=config.get('BASIC_AUTH_PASSWORD'))
parser.add_option("--type",
help="access spider server type, default: %s" % config.get('SERVER_TYPE'),
dest='server_type',
default=config.get('SERVER_TYPE'))
parser.add_option("--server",
help="servers, default: %s" % config.get('SERVERS'),
dest='servers',
action='append',
default=[])
parser.add_option("--database-url",
help='SpiderKeeper metadata database default: %s' % config.get('SQLALCHEMY_DATABASE_URI'),
dest='database_url',
default=config.get('SQLALCHEMY_DATABASE_URI'))
parser.add_option("--no-auth",
help="disable basic auth",
dest='no_auth',
action='store_true')
parser.add_option("-v", "--verbose",
help="log level",
dest='verbose',
action='store_true')
return parser.parse_args()
部署&運行
啟動scrapyd
使用scrapy-deploy將你的文件部署到你本地的服務(wù)器上面,你本地的scrapyd獲得相應(yīng)的 .egg
文件.
python C:\Users\dengyi\AppData\Local\Programs\Python\Python36\Scripts\scrapyd-deploy cqvip -p Cqvip
啟動 spiderkeeper
博主這里是啟動了多個,進(jìn)入界面 http://localhost:5000
-
Deploy
部署,建立任務(wù)的第一步計入Deploy
創(chuàng)建一個新的工程我們起名為test.
- 將我們的本地的
egg
文件上傳到到Deploy. - 如果你是多臺服務(wù)器的話那么這一步便將你所有scrpayd上,部署Wangfang文件.
-
Dashboard
是儀表盤在這里你可以啟動你的spider跟監(jiān)控spider的運行狀態(tài).
到這里一個完美的spiderkeeper就搭建成功啦.