作者:来自 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