前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Crawlab 支持Nodejs脚本执行

Crawlab 支持Nodejs脚本执行

原创
作者头像
easonxie
修改2022-08-29 19:31:27
9050
修改2022-08-29 19:31:27
举报

最近打算使用nodejs写点爬虫,爬取一些自己感兴趣的信息,发现项目Crawlab不错,可以支持在线写爬虫,制定定时任务,支持分布式,但是对nodejs的支持不是很友好,官方也缺乏文档指引。想在Crawlab上使用nodejs写好爬虫,得自己好好折腾下了

一、安装Crawlab

在服务器上先按照docker,然后按照官方文档的指引,下载好docker-compose.yml, 然后执行docker-compose up -d,启动镜像,访问http://<your_ip>:8080

代码语言:txt
复制
version: '3.3'
services:
  master:
    image: crawlabteam/crawlab
    container_name: crawlab_master
    restart: always
    environment:
      CRAWLAB_NODE_MASTER: "Y"  # Y: 主节点
      # mongo host address. 在 Docker-Compose 网络中,直接引用 service 名称
      CRAWLAB_MONGO_HOST: "mongo"  
      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:
      - "/opt/crawlab/master:/data"  # 持久化 crawlab 数据
    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"  # 持久化 mo ngo 数据
    ports:
      - "27017:27017"  # 开放 mongo 端口到宿主机

官方虽然声称支持任何语言的爬虫,但是默认的指引安装的镜像只是预装了paython的爬虫执行环境,默认情况下使用nodejs会报错。

创建nodejs爬虫例子
创建nodejs爬虫例子
官方镜像不带Node执行环境
官方镜像不带Node执行环境

二、支持Nodejs环境

我们可以直接在crawlab master镜像里安装nodejs,这样就可以直接支持node脚本执行了,但是这样每次重建镜像,都得重新安装nodejs, 比较理想的办法是构建一个支持node的crawlab镜像,说干就干。 先下载好node到本地

代码语言:javascript
复制
// cd 到docker-compose.yml 目录下执行
wget https://nodejs.org/dist/v16.16.0/node-v16.16.0-linux-x64.tar.xz
// 解压xz
xz -d node-v16.16.0-linux-x64.tar.xz

然后创建如下的Dockerfile

代码语言:javascript
复制
FROM crawlabteam/crawlab:0.6.0

MAINTAINER easonxie@tencent.com

RUN cd /usr/local

ENV PATH "$PATH:/usr/local/node-v16.16.0-linux-x64/bin/"

COPY ./node-v16.16.0-linux-x64.tar /usr/local/node-v16.16.0-linux-x64.tar

RUN tar -xvf /usr/local/node-v16.16.0-linux-x64.tar -C /usr/local

RUN npm config set registry https://mirrors.tencent.com/npm/

RUN npm i -g pnpm

完成后,在Dockerfile目录下执行

代码语言:javascript
复制
docker build -t node-crawlab .

编译完成后,修改下docker-compose.yml

代码语言:javascript
复制
version: '3.3'
services:
  master:
    image: node-crawlab
    container_name: crawlab_master
    restart: always
    environment:
      CRAWLAB_NODE_MASTER: "Y"  # Y: 主节点
      # mongo host address. 在 Docker-Compose 网络中,直接引用 service 名称
      CRAWLAB_MONGO_HOST: "mongo"  
      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:
      - "/opt/crawlab/master:/data"  # 持久化 crawlab 数据
    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"  # 持久化 mo ngo 数据
    ports:
      - "27017:27017"  # 开放 mongo 端口到宿主机

执行docker-compose -d 重新执行镜像。然后重新去执行之前创建的nodejs 爬虫

已经支持nodejs了
已经支持nodejs了

可以看到,任务已经支持了nodejs运行。

这个镜像我已经打包推送到Dockerhub里,小伙伴们可以直接把官方的crawlabteam/crawlab换成我提交的这个

easonxie/crawlab-nodejs 就不用再折腾了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装Crawlab
  • 二、支持Nodejs环境
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com