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

Beforevolumes:- ./config:/home/app/configAftervolumes:- .\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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89423.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89423.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89423.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS高级开发工程师面试——RunTime

iOS高级开发工程师面试——RunTime 一、简介 二、介绍下 RunTime 的内存模型(isa、对象、类、metaclass、结构体的存储信息等) 对象 类 三、为什么要设计 metaclass ? 四、class_copyIvarList & class_copyPropertyList区别? 五、class_rw_t 和 class_ro_t 的区别? 六…

实现分页查询

分页查询分页查询语句项目中添加分页功能按钮设置前后端代码功能实现分页查询语句 限制查询的 sql 语句&#xff1a; select * from student limit 0,4sql 查询结果如下&#xff1a; 分页查询的每一页都对应一行 sql 语句&#xff0c;若每一行都写单独对应的 sql 语句不仅重复…

[QOI] qoi_desc | qoi_encode | qoi_decode

链接&#xff1a;https://phoboslab.org/log/2021/11/qoi-fast-lossless-image-compression &#xff08;看代码设计的时候&#xff0c;真的大为震撼&#xff0c;伟大的algorithm T.T&#xff09; docs&#xff1a;QOI图像格式 qoi项目提出了Quite OK Image&#xff08;QOI&am…

智慧城轨可视化:一屏智管全城

图扑智慧城轨可视化系统&#xff0c;把地铁线路、车站、列车都搬进三维画面。列车晚点预警、站台拥挤提示、设备故障定位…… 这些关键信息一屏聚合&#xff0c;调度员能快速调整发车频次&#xff0c;疏导高峰客流。遇上突发情况&#xff0c;系统联动应急方案&#xff0c;同步显…

包新的Git安装与使用教程(2024九月更新)

目录 一、安装git 1.下载git 2.git安装 3.环境变量配置与测试 二、使用教程 1.创建版本库 2.版本回退 3.删除和恢复文件 一、安装git 1.下载git 官方下载地址&#xff1a;https://git-scm.com/download 然后进入以下页面&#xff0c;点击下载链接即可(windows一般都是…

中望3D 2026亮点速递(1)-全新槽功能螺纹功能,减少繁琐操作

本文为CAD芯智库整理&#xff0c;未经允许请勿复制、转载&#xff01;中望3D 2026全新的槽功能&#xff0c;包括&#xff1a;&#xff08;1&#xff09;可快速生成多种槽形&#xff1b;&#xff08;2&#xff09;快速生成一个或多个槽&#xff1b;&#xff08;3&#xff09;支持…

2025毫米波雷达技术白皮书:智能汽车与物联网的感知核心

随着人工智能、物联网&#xff08;IoT&#xff09;和智能汽车产业的迅猛发展&#xff0c;毫米波雷达技术正成为感知领域的核心驱动力。毫米波雷达凭借其高精度、全天候和强抗干扰能力&#xff0c;广泛应用于智能汽车的自动驾驶、物联网的环境感知以及工业自动化。2025年&#x…

用 React-Three-Fiber 实现雪花下落与堆积效果:从零开始的 3D 雪景模拟

在 Web3D 开发中&#xff0c;自然现象模拟一直是极具吸引力的主题。本文将基于 React-Three-Fiber&#xff08;R3F&#xff09;框架&#xff0c;详解如何实现一个包含雪花下落、地面堆积的完整雪景效果。我们会从基础粒子系统入手&#xff0c;逐步完善物理交互逻辑&#xff0c;…

从抓包GitHub Copilot认证请求,认识OAuth 2.0技术

引言 在现代开发工具中&#xff0c;GitHub Copilot 以智能、嵌入式的人工智能代码补全能力著称。作为一项涉及用户敏感数据和付费授权的服务&#xff0c;其认证授权流程尤为值得技术研究。本文基于实际抓包 VS Code 中的 Copilot 登录认证请求&#xff0c;系统梳理其 OAuth 2.…

Linux操作系统之线程:分页式存储管理

目录 前言&#xff1a; 一、分页式存储管理 二、二级页表的地址转化 三、缺页中断 总结 前言&#xff1a; 我们上篇文章简单介绍了线程的一些知识点&#xff0c;但是还有很多坑没有给大家填上&#xff0c;包括页表部分我们还没为大家说明。 本篇文章我将会继续为大家讲解…

xss1-8

Level-1<script>alert()</script>基础反射型 无任何过滤Level-2"> <script>alert()</script> <"闭合属性&#xff1a;">用来闭合当前标签的value属性注入新标签&#xff1a;闭合属性后&#xff0c;插入独立的<script>…

51c嵌入式~单片机~合集1

自己的原文哦~ https://blog.51cto.com/whaosoft/11897656 一、STM32的启动模式配置与应用 三种BOOT模式 所谓启动&#xff0c;一般来说就是指我们下好程序后&#xff0c;重启芯片时&#xff0c;SYSCLK的第4个上升沿&#xff0c;BOOT引脚的值将被锁存。用户可以通过设…

Typecho分类导航栏开发指南:从基础到高级实现

文章目录 Typecho分类导航栏深度解析:父分类与子分类的完美呈现 引言 一、Typecho分类系统基础 1.1 Typecho分类结构 1.2 获取分类数据的基本方法 二、基础分类导航输出 2.1 简单的平铺式导航 2.2 带计数器的分类导航 三、层级分类导航实现 3.1 递归输出父子分类 3.2 使用Type…

C++异步编程工具 async promise-future packaged_task等

深入探讨 C11 中引入的四个核心异步编程工具&#xff1a;std::async, std::future, std::promise, 和 std::packaged_task。它们共同构成了 C 现代并发编程的基础。 为了更好地理解&#xff0c;我们可以使用一个餐厅点餐的类比&#xff1a; std::future (取餐凭证)&#xff1…

Linux-网络管理

网络管理1. 网络基础1.1 TCP/IP 协议栈&#xff08;四层模型&#xff09;1.2 网络设备配置与基础概念1.3 网络接口命名规则1.4 网络配置文件位置2. 常用网络配置命令2.1 查看网络接口信息2.2 配置 IP 地址2.3 启用/禁用网卡2.4 修改网卡 MAC 地址2.5 配置网卡的 MTU&#xff08…

Linux锁的概念及线程同步

目录 1.常见锁概念 死锁 死锁四个必要条件 避免死锁 避免死锁算法 2. Linux线程同步 条件变量 同步概念与竞态条件 条件变量函数 初始化 销毁 等待条件满足 唤醒等待 简单案例&#xff1a; 条件变量使用规范 1.常见锁概念 死锁 死锁是指在一组进程中的各个进程均占有不会释放的…

docker更换国内加速器-更换华为加速器2025-717亲测可用docker 拉取镜像出错

[rootlocalhost ~]# docker pull nginx Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)报错原因就是…

Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案

Unity VR多人手术模拟恢复2&#xff1a;客户端移动同步问题分析与解决方案 &#x1f3af; 问题背景 在开发基于Unity Mirror网络架构的VR多人手术模拟系统时&#xff0c;我们遇到了一个复杂的客户端移动同步问题&#xff1a; 主要操作者&#xff08;第一个客户端&#xff09;&a…

uni-app开发的页面跳转全局加载中

uni-app开发的页面跳转全局加载中首先需要下载插件创建加载中页面组件app.vue页面中监听跳转首先需要下载插件 https://ext.dcloud.net.cn/plugin?id20613 创建加载中页面组件 <!-- 全局自定义加载中 --> <template><view v-if"visible" class&qu…

XXE漏洞4-XXE无回显文件读取-PentesterLab靶场搭建

一.PentesterLab靶场搭建(实验环境搭建)介绍&#xff1a;PentesterLab 是一个全面的漏洞演示平台&#xff0c;但是它是收费的&#xff0c;我们这里只使用它的 xxe 演示案例。安装 PentesterLab 虚拟机:下载好镜像&#xff1a; 1.打开VMware新建虚拟机&#xff0c;选择典型就行。…