在 Windows 上使用 Docker 运行 Elastic Open Crawler

作者:来自 Elastic Matt Nowzari

了解如何使用 Docker 在 Windows 环境中运行 Open Crawler。

了解将数据摄取到 Elasticsearch 的不同方式,并深入实践示例,尝试一些新方法。

Elasticsearch 拥有大量新功能,助你为特定场景构建最佳搜索方案。立即开始免费试用


Open Crawler 虽然没有官方 Windows 支持,但这并不意味着它不能在 Windows 上运行!在这篇博客中,我们将探索如何使用 Docker 在你的 Windows 环境中启动并运行 Open Crawler。

我们将介绍两种在系统中下载并运行 Open Crawler 的方法。这两种方法都依赖于 Docker,步骤与 Open Crawler 官方文档中的说明非常相似。但我们也会指出你需要对命令或文件进行的(非常小的)修改,以便更顺利地部署 Open Crawler!

前提条件

在开始之前,请确保你的 Windows 设备已安装以下内容:

  • git

  • Docker Desktop

  • Docker Desktop CLI(随 Docker Desktop 一起提供)

  • Docker Compose(随 Docker Desktop 一起提供)

你可以在这里了解更多关于安装 Docker Desktop 的信息。

此外,本博客默认使用 Open Crawler 0.3.0 或更高版本。使用带有 :latest 标签的 Docker 镜像,在撰写本文时应至少为 0.3.0 版本。

创建配置 YAML 文件

在开始运行 Open Crawler 的不同方法之前,你需要先创建一个基本的配置文件供 Open Crawler 使用。

使用你喜欢的文本编辑器,新建一个名为 crawl-config.yml 的文件,并填入以下内容,然后将其保存在一个方便访问的位置。

复制代码
output_sink: console
log_level: debug

domains:
    - url: "https://www.speedhunters.com"

max_redirects: 2

通过 Docker 镜像直接运行 Open Crawler

步骤 1:拉取 Open Crawler Docker 镜像

首先,你需要将 Open Crawler 的 Docker 镜像下载到本地机器。docker pull 命令可以自动下载最新的 Docker 镜像。

在命令行终端中运行以下命令:

复制代码
docker pull docker.elastic.co/integrations/crawler:latest

如果你对所有可用的 Open Crawler 版本感兴趣,或者想体验 Open Crawler 的快照版本,可以查看 Elastic 的 Docker 集成页面,了解所有可用的镜像。

命令执行完成后,你可以运行 docker images 命令,确认该镜像已存在于本地镜像列表中:

复制代码
PS C:\Users\Matt> docker images
REPOSITORY                                              TAG                IMAGE ID       CREATED        SIZE
docker.elastic.co/integrations/crawler                  latest             5d34a4f6520c   1 month ago   503MB

第 2 步:执行抓取

现在已经创建了配置 YAML 文件,你可以使用它来执行抓取任务!

在保存 crawl-config.yml 的目录中,运行以下命令:

复制代码
docker run \
  -v .\crawl-config.yml:/crawl-config.yml \
  -it docker.elastic.co/integrations/crawler:latest jruby bin/crawler crawl /crawl-config.yml

请注意命令中卷(-v)参数使用的 Windows 风格反斜杠和 Unix 风格正斜杠。冒号左边是 Windows 风格路径(带反斜杠),右边是带正斜杠的路径。

复制代码
  -v .\crawl-config.yml:/crawl-config.yml

-v 参数将本地文件(.\crawl-config.yml)映射到容器内的路径(/crawl-config.yml)。

使用 docker-compose 运行 Open Crawler

步骤 1:克隆仓库

使用 git 将 Open Crawler 仓库克隆到你选择的目录:

复制代码
git clone git@github.com:elastic/crawler.git

提示:别忘了,你也可以随时 fork 这个仓库!

步骤 2:将配置文件复制到 config 文件夹

在爬虫仓库的顶层目录中,有一个名为 config 的文件夹。将你创建的配置 YAML 文件 crawl-config.yml 复制到该目录中。

步骤 3:修改 docker-compose 文件

在爬虫仓库的顶层目录,你会看到一个名为 docker-compose.yml 的文件。你需要确保该文件中 volumes 下的本地配置目录路径符合 Windows 格式。

使用你喜欢的文本编辑器打开 docker-compose.yml,将其中的 "./config" 改为 ".\config"

复制代码
Before
	volumes:
  		- ./config:/home/app/config

After
	volumes:
  		- .\config:/home/app/config

该 volumes 配置允许 Docker 将你本地仓库的 config 文件夹挂载到 Docker 容器中,使容器能够访问并使用你的配置 YAML。

冒号左侧是本地挂载路径(因此必须符合 Windows 格式),右侧是容器内的目标路径,必须符合 Unix 格式。

步骤 4:启动容器

运行以下命令启动 Open Crawler 容器:

复制代码
docker-compose up -d

你可以在 Docker Desktop 的 Containers 页面确认,或者运行以下命令确认容器确实正在运行:

复制代码
docker ps -a

步骤 5:执行抓取命令

最后,你可以执行抓取!以下命令将在刚启动的容器中开始抓取:

复制代码
docker exec -it crawler bin/crawler crawl config/my-config.yml

这里命令只使用了 Unix 风格的正斜杠,因为它是在调用容器内部的 Open Crawler CLI。

命令开始运行后,你应该能看到抓取成功的输出!🎉

复制代码
PS C:\Users\Matt> docker exec -it crawler bin/crawler crawl config/crawler.yml
[crawl:684739e769ea23aa2f4aaeb5] [primary] Initialized an in-memory URL queue for up to 10000 URLs
[crawl:684739e769ea23aa2f4aaeb5] [primary] Starting a crawl with the following configuration: <Crawler::API::Config: log_level=debug; event_logs=false; crawl_id=684739e769ea23aa2f4aaeb5; crawl_stage=primary; domains=[{:url=>"https://www.speedhunters.com"}]; domain_allowlist=[#<Crawler::Data::Domain:0x3d
...
...
binary_content_extraction_enabled=false; binary_content_extraction_mime_types=[]; default_encoding=UTF-8; compression_enabled=true; sitemap_discovery_disabled=false; head_requests_enabled=false>
[crawl:684739e769ea23aa2f4aaeb5] [primary] Starting the primary crawl with up to 10 parallel thread(s)...
[crawl:684739e769ea23aa2f4aaeb5] [primary] Crawl task progress: ...

以上控制台输出为简化版,但你应关注的主要日志行就在这里!

总结

如你所见,只要注意 Windows 路径格式,Open Crawler 的 Docker 工作流程就能兼容 Windows!只要 Windows 路径用反斜杠,Unix 路径用正斜杠,你就能让 Open Crawler 在 Windows 上顺利运行,效果与 Unix 环境相当。

现在你已经运行了 Open Crawler,可以查看仓库中的文档,了解如何根据需求配置 Open Crawler!

原文:Run Elastic Open Crawler in Windows with Docker - Elasticsearch Labs

相关推荐
别致的影分身1 小时前
Docker 镜像原理
运维·docker·容器
阿葱(聪)1 小时前
java 在k8s中的部署流程
java·开发语言·docker·kubernetes
指月小筑1 小时前
K8s 自定义调度器 Part1:通过 Scheduler Extender 实现自定义调度逻辑
云原生·容器·kubernetes·go
joe02351 小时前
电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
windows·gpt·电脑·uefi
前端 贾公子1 小时前
vue-cli 模式下安装 uni-ui
前端·javascript·windows
?ccc?2 小时前
Kubernetes 架构原理与集群环境部署
容器·架构·kubernetes
过往入尘土3 小时前
网络爬虫的相关知识和操作
爬虫
平凡灵感码头3 小时前
用 urllib 开启爬虫之门:从零掌握网页数据抓取
爬虫
玄辰星君4 小时前
【MAC】nacos 2.5.1容器docker安装
macos·docker·nacos