Crawlab爬虫管理框架使用(上手)
1、准备
1. 安装Go环境
官网要求使用 Go1.15+ 的 更多 Go 下载
我使用的是 Go1.17.5 ,如果你懒得去寻找的话也可以和我使用同一个版本 Go1.17.5 下载完成后直接点点就可以
2. 安装Docker
1. 安装docker(默认推荐docker)
Windows 和 Mac 的用户可以下载 Docker Desktop 来完成 Docker 安装。
2. 下载镜像
crawlab开发者已经在DockerHub上构建了Crawlab镜像,只需要将其 pull 下来使用。
Docker国内加速器:
1 | { |
下载命令:(在这不建议使用。你问我为啥,因为我菜暂时没有能直接使用拉取下来的项目)
1 | docker pull tikazyq/crawlab:latest |
3. 安装 Docker-Compose
docker-compose是一个集群管理方式,可以让我们更方便的管理crawlab
安装 docker-compose 其实比较简单,在安装了 pip 的情况下(Python 3),执行以下命令。
1 | pip install docker-compose |
安装好后可以执行 docker-compose ps 来查看docker集群运行状况 如下:
1 | Name Command State Ports |
这是没有 Docker 容器在运行的情况,也就是空列表。如果有容器在运行,可以看到其对应的信息。
4. 更多请参考crawlab官方文档
2、初始化
1. 拉取项目
git clone https://gitee.com/tikazyq/crawlab.git #码云
或
git clone https://github.com/crawlab-team/crawlab.git #github
说明:至于为什么不使用ssh?因为我操作时ssh拉取失败
2. 启动运行项目
之前安装的docker-compose在这就起了作用,可以帮我们直接启动整个环境,就不必要使用docker命令去一个个部署启动
在拉取的项目中配置docker-compose.yml 文件:
1 | version: '3.3' # Docker Compose 的版本号(请看后续说明) |
可以根据自己的要求来配置docker-compose.yml。尤其需要注意CRAWLAB_API_ADDRESS这个环境变量,我在使用时就是这里出了问题,导致前端运行起来访问不到后端数据
更多配置请参考 官方配置
完成后就可使用以下命令启动,然后访问 http://localhost:8080
1 | docker-compose up -d |
3、使用
1. 部署爬虫前
这里主要讲的是scrapy爬虫
对你已成功运行的爬虫准备要部署到crawlab上的需要在settings.py文件中找到ITEM_PIPELINES,添加如下代码
1 | ITEM_PIPELINES = { |
以方便你在运行后查看结果数据
2. 打包上传部署爬虫
您需要到爬虫根目录下进行打包,也就是和scrapy.cfg同级进行打包(所有文件包括scrapy.cfg)
注意:打包成zip文件
当然还有更为简便的上传操作,使用CLI命令行工具 到官方文档查看具体教程,这里就不做概述
其他更多具体操作也请参考crawlab教程
到这你的爬虫应该可以成功运行了,如果失败请在任务详情里查看日志进行对应的修改。
3. 定时任务
这里主要讲述一下 Cron 定时器
相信对于学过bash脚本的朋友应该很简单,在cron行点击编辑会弹出一个生成 cron 的窗口,在下边有对应的定时操作,主需要选择你想要的时间即可。记住分、时、天、月、周每一个都需要选,否则不能保存
到这里crawlab的简单上手教程就完成了,你可以去探索更深层的用法。
2、部署
- 添加docker-compose.yml文件
- 启动
- 配置https代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58server {
#监听443端口
listen 443 ssl;
#你的域名
server_name crawlab.yuyawei.cn;
# ssl on;
#ssl证书的凑crt文件路径 (阿里云证书没有crt使用pem)
ssl_certificate /certificate/crawlab.yuyawei.cn_nginx/crawlab.yuyawei.cn_bundle.crt;
#ssl证书的key文件路径
ssl_certificate_key /certificate/crawlab.yuyawei.cn_nginx/crawlab.yuyawei.cn.key;
ssl_session_cache shared:SSL:1m;
#指定客户端可以重用会话参数的时间
ssl_session_timeout 5m;
#配置加密套件。为空字符串时,由openssl自行选择加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#为遵循安全规范,配置协议不支持SSLv3、SSLv2 、TLSv1
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
location / {
proxy_pass http://localhost:8080; #修改此地址为后台服务地址
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 1;
proxy_buffering off;
chunked_transfer_encoding off;
# 重复提交情况
proxy_next_upstream off;
proxy_cache off;
proxy_send_timeout 30m;
proxy_read_timeout 30m;
proxy_connect_timeout 600;
client_max_body_size 100m;
}
}
# 自动跳转https
server {
listen 80;
listen [::]:80;
charset utf-8;
server_name crawlab.yuyawei.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}


