spiderkeeper是一款开源的spider管理工具,可以方便的进行爬虫的启动,暂停,定时,同时可以查看分布式情况下所有爬虫日志,查看爬虫执行情况等功能。
详见
https://blog.csdn.net/m0_38106113/article/details/81812135
注意:
crapyd spiderkeeper 都必须在项目的根目录下运行
spiderkeeper可以通过http的API进行操控,官方给了一个文档及调试页面,在运行spiderkeeprt后,
访问 http://127.0.0.1:5000/api.html
点开 Show/Hide
按钮,即可看到文档
有相关api接口说明,也可以直接在页面上尝试访问api
正常调用http的包访问api即可,有一点需要注意,访问时需要加上授权
html = requests.post(url=url, data=data, auth=('admin', 'admin'))
需要加上授权关键字 auth
String credential = Credentials.basic("admin", "admin");
Request request = new Request
.Builder()
.header("Authorization", credential)
.post(formBody)
.url(url)
.build();
构造request头时,加上Authorization
不知道为什么,对spiderkeeper没有列出对定时任务的删除和执行单次任务的API
,通过对spiderkeep的抓包后,得出以下api:
datas = {
'spider_name': spider_name,
'spider_arguments': spider_arguments,
run_type': 'onetime',
'priority': '0',
'daemon':'auto'
}
url='http://localhost:5000/project/1/job/add'
html = requests.post(url=url,data=datas ,auth=('admin','admin'))
def deleteask(self,jobId):
url='http://localhost:5000/project/1/job/%s/remove'%(jobId)
html = requests.get(url=url,auth=('admin','admin'))
if(html.text=='true\n'):
return True
return False
上面api访问后都会返回302错误,但spidekeeper还是会执行