クロールラボのインストール

0.6.0beta には現在問題があるため、安定版がリリースされる前に 0.5.x を使用する前に安定版を使用することをお勧めします。

Crawlab0.6.0-beta.20211224

0.6.0 ドキュメントのクイック スタートの手順に従います(Docker を事前にインストールする必要があります)。

  1. docker pull クローラブチーム/クローラボ
  2. # docker pull mongo は Crawlab の代わりに独自の MongoDB を使用するように設定されているため、このステップをインストールする必要はありません
  3. pip インストール docker-compose
  4. マスターノードとしてサーバー上に構成ファイルを作成し、docker-compose.yml という名前を付け、次の内容を入力します。次のファイルの内容は、クイック スタートにはありませんが、 Docker - 外部 MongoDBにあり、具体的には、以下のコードの最初の行のコメントにあります。なお、CRAWLAB_MONGO_URIとCRAWLAB_MONGO_AUTHMECHANISMとCRAWLAB_MONGO_AUTHMECHANISMPROPERTIESは何が役に立つのか分からないのでコメントアウトしました。
  5. # from https://docs-next.crawlab.cn/zh/guide/installation/docker.html#%E5%A4%96%E9%83%A8-mongodb,这个文档是Crawlab0.6.0的文档,这个文档的链接来自https://github.com/crawlab-team/crawlab英文README中超链接Documentation (v0.6-beta)
    # 外部 MongoDB 的主节点
    version: '3.3'
    services:
      master:
        image: crawlabteam/crawlab
        container_name: crawlab_master
        restart: always
        environment:
          CRAWLAB_NODE_MASTER: Y  # Y: 主节点
          # CRAWLAB_MONGO_URI: <mongo_uri>  # mongo uri (单独设置)
          CRAWLAB_MONGO_HOST: your host  # mongo host address
          CRAWLAB_MONGO_PORT: '27017'  # mongo port 
          CRAWLAB_MONGO_DB: 'crawlab'  # mongo database,没有数据库会自动创建 
          CRAWLAB_MONGO_USERNAME: your username  # mongo username
          CRAWLAB_MONGO_PASSWORD: your password  # mongo password 
          CRAWLAB_MONGO_AUTHSOURCE: 'admin'  # mongo auth source 
          # CRAWLAB_MONGO_AUTHMECHANISM: <mongo_auth_mechanism>  # mongo auth mechanism 
          # CRAWLAB_MONGO_AUTHMECHANISMPROPERTIES: <mongo_auth_mechanism_properties>  # mongo auth mechanism properties
        volumes:
          - "/opt/crawlab/master:/data"  # 持久化 crawlab 数据
        ports:
          - "8080:8080"  # 开放 api 端口
          - "9666:9666"  # 开放 grpc 端口

  6. 作業ノードとしてサーバー上に docker-compose.yml を作成し、以下の内容を入力します。Tencent Cloud サーバーをマスター ノードとして使用し、ローカル仮想マシンの CentOS を作業ノードとして使用しているため、作業ノードにはパブリック ネットワーク IP が必要になる可能性があります。その場合、Crawlab ページに作業ノードが表示されませ仮想マシン、Tencent Cloud サーバーのみ、メイン ノード、作業ノードとして別のサーバーを検索すると、新しいサーバーの作業ノードが Crawlab ページに表示されます。
  7. # 工作节点
    version: '3.3'
    services:
      worker:
        image: crawlabteam/crawlab
        container_name: crawlab_worker
        restart: always
        environment:
          CRAWLAB_NODE_MASTER: N  # N: 工作节点
          CRAWLAB_GRPC_ADDRESS: <master_node_ip>:9666  # grpc address。需将<master_node_ip>替换为主节点IP,并保证其能被工作节点访问
          CRAWLAB_FS_FILER_URL: http://<master_node_ip>:8080/api/filer  # seaweedfs api
        volumes:
          - "/opt/crawlab/master:/data"  # 持久化 crawlab 数据

  8. マスターノードと作業ノードのymlがあるフォルダーで docker-compose up -d を実行してコンテナを起動し、エラーが発生した場合は docker-compose down を実行してシャットダウンし、現在のコンテナを削除してから再試行してください。前の手順。また、docker-compose stopはコンテナを停止するもので、docker-compose psはコンテナとコンテナの状態を一覧表示するものです。
  9. ブラウザでマスター ノード IP:8080 を開き、Crawlab ページに入ります。デフォルトのアカウント パスワードは admin です。ワーカー ノードはポート 8080 (API) および 9666 (gRPC) を介してマスター ノードに接続するため、それらの両方が開いており、マスター ノードのファイアウォールによって無効になっていないことを確認する必要があります。
  10. Crawlab ページの左側にあるリストで、パスワードを f9j4R1S9r3k4D8v2 (何気なく入力したパスワード) に変更します。言語はページの右上隅で設定できます。

ユーザー名 admin を別の名前に変更することはお勧めできません。現在の 0.6.0 および 0.5.x コミュニティ エディションには問題があります。名前を変更した後、MongoDB で admin ユーザーを手動で削除したとしても、 Docker が再起動されると、管理者は自動的に再生成されます。ユーザーとパスワードは引き続きデフォルトの管理者であるため、他のユーザーは管理者を使用して Crawlab ページにログインできます。

Crawl で単一ファイル クローラーを実行すると、py ファイルが 1 つだけあるクローラーになります。実行後、ファイル内のコードが消去される理由がわかりません。scrapy を実行するとこの問題は発生しません。

クロールラボ0.5.1

全体的な手順は 0.6.0beta とほぼ同じです。

  1. docker pull tikazyq/crawlab:latest、0.6.0beta とは異なります
  2. pip インストール docker-compose
  3. マスターノードとしてサーバー上に構成ファイルを作成し、docker-compose.yml という名前を付け、次の内容を入力します。
  4. # from https://docs.crawlab.cn/zh/Installation/Docker.html中安装并启动Crawlab,这个文档的链接来自https://github.com/crawlab-team/crawlab英文README中超链接Documentation
    # 以下内容只保留了原文档中master部分,删除了其余内容,同时删除了master中的depends_on,它是启用容器中的数据库,而我要用我自己的数据库,另外还开启了日志持久化,文档中建议生产环境开启它。
    # 另外,原文档中将主节点和工作节点的信息写在同一个yml文件中,我觉得如果只有一台机器,那么在一台机器中建立两个节点没有意义,所以主节点的yml我只保留了主节点的信息。这点参考了0.6.0beta的节点配置,它就是主节点和工作节点用不同的文件配置的。
    version: '3.3'
    services:
      master: 
        image: tikazyq/crawlab:latest
        container_name: master
        environment:
          # CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>"  # backend API address 后端 API 地址. 适用于 https 或者源码部署
          CRAWLAB_SERVER_MASTER: "Y"  # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
          CRAWLAB_MONGO_HOST: your host  # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
          CRAWLAB_MONGO_PORT: "27017"  # MongoDB port MongoDB 的端口
          CRAWLAB_MONGO_DB: "crawlab"  # MongoDB database MongoDB 的数据库
          CRAWLAB_MONGO_USERNAME: your username  # MongoDB username MongoDB 的用户名
          CRAWLAB_MONGO_PASSWORD: your password  # MongoDB password MongoDB 的密码
          CRAWLAB_MONGO_AUTHSOURCE: "admin"  # MongoDB auth source MongoDB 的验证源
          CRAWLAB_REDIS_ADDRESS: your host  # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
          CRAWLAB_REDIS_PORT: "6379"  # Redis port Redis 的端口
          CRAWLAB_REDIS_DATABASE: your redis database index  # Redis database Redis 的数据库
          CRAWLAB_REDIS_PASSWORD: your password  # Redis password Redis 的密码
          # CRAWLAB_LOG_LEVEL: "info"  # log level 日志级别. 默认为 info
          # CRAWLAB_LOG_ISDELETEPERIODICALLY: "N"  # whether to periodically delete log files 是否周期性删除日志文件. 默认不删除
          # CRAWLAB_LOG_DELETEFREQUENCY: "@hourly"  # frequency of deleting log files 删除日志文件的频率. 默认为每小时
          CRAWLAB_SERVER_REGISTER_TYPE: "ip"  # node register type 节点注册方式. 默认为 mac 地址,也可设置为 ip(防止 mac 地址冲突)
          CRAWLAB_SERVER_REGISTER_IP: 主节点ip  # node register ip 节点注册IP. 节点唯一识别号,只有当 CRAWLAB_SERVER_REGISTER_TYPE 为 "ip" 时才生效
          # CRAWLAB_TASK_WORKERS: 8  # number of task executors 任务执行器个数(并行执行任务数)
          # CRAWLAB_RPC_WORKERS: 16  # number of RPC workers RPC 工作协程个数
          # CRAWLAB_SERVER_LANG_NODE: "Y"  # whether to pre-install Node.js 预安装 Node.js 语言环境
          # CRAWLAB_SERVER_LANG_JAVA: "Y"  # whether to pre-install Java 预安装 Java 语言环境
          # CRAWLAB_SETTING_ALLOWREGISTER: "N"  # whether to allow user registration 是否允许用户注册
          # CRAWLAB_SETTING_ENABLETUTORIAL: "N"  # whether to enable tutorial 是否启用教程
          # CRAWLAB_NOTIFICATION_MAIL_SERVER: smtp.exmaple.com  # STMP server address STMP 服务器地址
          # CRAWLAB_NOTIFICATION_MAIL_PORT: 465  # STMP server port STMP 服务器端口
          # CRAWLAB_NOTIFICATION_MAIL_SENDEREMAIL: [email protected]  # sender email 发送者邮箱
          # CRAWLAB_NOTIFICATION_MAIL_SENDERIDENTITY: [email protected]  # sender ID 发送者 ID
          # CRAWLAB_NOTIFICATION_MAIL_SMTP_USER: username  # SMTP username SMTP 用户名
          # CRAWLAB_NOTIFICATION_MAIL_SMTP_PASSWORD: password  # SMTP password SMTP 密码
        ports:    
          - "8080:8080" # frontend port mapping 前端端口映射
        volumes:
          - "/var/crawlab/log:/var/logs/crawlab" # log persistent 日志持久化

  5. 作業ノードとしてサーバー上に docker-compose.yml を作成し、以下の内容を入力します。作業ノードにはパブリック IP が必要です。
  6. # 以下内容复制的主节点的,删除了主节点中注释掉的项,修改了container_name和CRAWLAB_SERVER_MASTER和CRAWLAB_SERVER_REGISTER_IP,注释掉了ports。这么做的原因是参考了https://docs.crawlab.cn/zh/Installation/MultiNode.html中部署工作节点部分
    version: '3.3'
    services:
      master: 
        image: tikazyq/crawlab:latest
        container_name: worker
        environment:
          CRAWLAB_SERVER_MASTER: "N"  # whether to be master node 是否为主节点,主节点为 Y,工作节点为 N
          CRAWLAB_MONGO_HOST: your host  # MongoDB host address MongoDB 的地址,在 docker compose 网络中,直接引用服务名称
          CRAWLAB_MONGO_PORT: "27017"  # MongoDB port MongoDB 的端口
          CRAWLAB_MONGO_DB: "crawlab"  # MongoDB database MongoDB 的数据库
          CRAWLAB_MONGO_USERNAME: your username  # MongoDB username MongoDB 的用户名
          CRAWLAB_MONGO_PASSWORD: your password  # MongoDB password MongoDB 的密码
          CRAWLAB_MONGO_AUTHSOURCE: "admin"  # MongoDB auth source MongoDB 的验证源
          CRAWLAB_REDIS_ADDRESS: your host  # Redis host address Redis 的地址,在 docker compose 网络中,直接引用服务名称
          CRAWLAB_REDIS_PORT: "6379"  # Redis port Redis 的端口
          CRAWLAB_REDIS_DATABASE: your redis database index  # Redis database Redis 的数据库
          CRAWLAB_REDIS_PASSWORD: your password  # Redis password Redis 的密码
          CRAWLAB_SERVER_REGISTER_TYPE: "ip"  # node register type 节点注册方式. 默认为 mac 地址,也可设置为 ip(防止 mac 地址冲突)
          CRAWLAB_SERVER_REGISTER_IP: 当前工作节点ip  # node register ip 节点注册IP. 节点唯一识别号,只有当 CRAWLAB_SERVER_REGISTER_TYPE 为 "ip" 时才生效
        # 工作节点不需要对外暴露端口
        # ports:    
        #   - "8080:8080" # frontend port mapping 前端端口映射
        volumes:
          - "/var/crawlab/log:/var/logs/crawlab" # log persistent 日志持久化

  7. 0.6.0betaと同様にマスターノードとワーカーノードのymlがあるフォルダでdocker-compose up -dを実行してコンテナを起動します。
  8. ブラウザでマスター ノード IP:8080 を開き、Crawlab ページに入ります。デフォルトのアカウント パスワードは admin です。0.5.1 には 0.6.0beta のポート 9666 がありません
  9. Crawlab ページの左側のリストで、パスワードを f9j4R1S9r3k4D8v2 (何気なく入力したパスワード) に変更します。

Crawlab0.5.1 にクローラを追加する場合は、結果を手動で入力するのが最善です。そうしないと、クローラの実行後、タスクの詳細にログがあっても、結果にデータが存在しない可能性があります。つまり、データベース。入力後にデータがない場合は、クローラーが終了してから数秒待ってからページを更新できます。更新: 結果を手動で入力しない場合、データは undefined というコレクションに配置されます。これは、クローラーを追加するときに書き込まないように指示されているにもかかわらず、デフォルトで results_<spider_name> コレクションに配置されるためです。追加が完了した後、クローラーを実行すると確認できます。結果セットが再び未定義になった場合は、未定義が結果セットの名前です。

結果を手動で入力することをお勧めします
クローラーを追加するときに結果を手動で入力しない場合、追加が完了した後にクローラーを実行すると、結果セットには「未定義」と表示されます。「未定義」は結果セットの名前です。

 

Crawlab0.5.1 クローラーの実行後、概要の結果の数が正しくない場合があります。データベース内のデータ量を確認するか、結果の最後のページのデータ量を確認することをお勧めします (1 件あたり 10 件が表示されるため)デフォルトではページ)。実際に100個のデータをクロールして、概要では結果の数が80個と表示されていますが、データベースには100個あり、結果の最後のページ(つまり10ページ目)のデータは10個です(完全なデータが実際にクロールされたことを示します)。

概要の結果の数が間違っている可能性があります

結果で、最後のページのデータ量が正しいかどうかを確認します (デフォルトでは各ページに 10 項目が表示されるため)。

おすすめ

転載: blog.csdn.net/fj_changing/article/details/124371916