在 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

相关推荐
傻啦嘿哟7 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
tedcloud1237 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
隐擎fox8 小时前
深入理解网络传输层安全:TLS 指纹识别(JA3/JA4)原理与 Python 协议层检测实战
爬虫·python·网络协议·安全·网络安全·https
大大大大晴天9 小时前
每天认识一个组件:分布式缓存Alluxio
大数据
IT利刃出鞘10 小时前
Docker Compose--安装WordPress--方法/示例
运维·docker·容器
AI_Auto10 小时前
架构视角看数字化转型|核心架构:大共享平台+小应用,从按需走向适变
大数据·人工智能·架构·制造
小蒋观天下10 小时前
社区AI智能摄像头完整选型指南
大数据·人工智能·安全·计算机视觉·语音识别·ai大模型
AI 思录11 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
wuyk55511 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
2601_9657422212 小时前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体