crawlab
单节点docker安装
此处介绍的是单节点的方式,多节点的情况可以把爬虫上传到一个节点中,之后会同步到其它节点上
version: '3.3'
services:
master:
image: crawlabteam/crawlab
container_name: crawlab_master
restart: always
environment:
CRAWLAB_NODE_MASTER: Y # Y: 主节点
CRAWLAB_MONGO_HOST: mongo # mongo host address. 在 Docker-Compose 网络中,直接引用 service 名称
CRAWLAB_MONGO_PORT: 27017 # mongo port
CRAWLAB_MONGO_DB: crawlab # mongo database
CRAWLAB_MONGO_USERNAME: username # mongo username
CRAWLAB_MONGO_PASSWORD: password # mongo password
CRAWLAB_MONGO_AUTHSOURCE: admin # mongo auth source
volumes:
- "./master:/data" # 持久化 crawlab 数据,master是win中的相对目录
ports:
- "8080:8080" # 开放 api 端口
depends_on:
- mongo
mongo:
image: mongo:4.2
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: username # mongo username
MONGO_INITDB_ROOT_PASSWORD: password # mongo password
volumes:
- "/opt/crawlab/mongo/data/db:/data/db" # 持久化 mongo 数据
ports:
- "27017:27017" # 开放 mongo 端口到宿主机
docker-compose up -d
运行,访问localhost:8080
,用户密码均为admin
上传爬虫
此处上传一个爬取图片的简单爬虫,上传requirements.txt或者package.json文件,crawlab会自动扫描并安装依赖,但是如果存在多版本依赖的话,还没尝试,希望大神知道的留言告知。
爬虫是一个下载美女图片的爬虫,进入到crawlab的终端中,执行pip3 list
可以看到安装的包,其中常见的如requests、parsel都已经安装了
// ceshi.py
import requests
import parsel
import os
os.mkdir('/data/aa')
for page in range(1, 2):
print(f'-------正在爬取第{page}页----------')
sub_url = ''if page == 1 else '_' + str(page)
url = f'https://pic.netbian.com/4kmeinv/index{sub_url}.html'
if not os.path.exists('/data/aa/' + f'第{page}页'):
os.mkdir('/data/aa/' + f'第{page}页')
response = requests.get(url=url)
response.encoding = 'gbk'
data_html = response.text
selector = parsel.Selector(data_html)
a_href_list = selector.css(
'#main > div.slist > ul > li > a::attr(href)').getall() # 获取每个图片的url
for a_href in a_href_list:
a_href = 'https://pic.netbian.com' + a_href
response_1 = requests.get(a_href)
selector_1 = parsel.Selector(response_1.text) # 每个图片的网页链接
img = selector_1.css('#main > div > div > div > a > img::attr(src)').getall()[
0] # 照片的url
download_url = 'https://pic.netbian.com/' + img
title = img.split('/')[-1]
download = requests.get(download_url).content
with open(f'/data/aa/第{page}页/{title}', mode='wb')as f:
f.write(download)
print(title, '下载完成')
print(f'第{page}页全部下载完成')
图片下载到data目录下,而data又通过docker映射到了本机的master目录中
填写如下
文章来源:https://www.toymoban.com/news/detail-682821.html
总结
简单的用了下,感觉crawlab很好用,能把多个爬虫方便的管理起来,还有cron的功能,当作脚本管理也很不错文章来源地址https://www.toymoban.com/news/detail-682821.html
到了这里,关于crawlab通过docker单节点部署简单爬虫的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!