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