上可擴展 Web 爬蟲系統的架構 AWS - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

上可擴展 Web 爬蟲系統的架構 AWS

下列架構圖顯示 Web 爬蟲程式系統,其設計旨在以符合道德的方式從網站擷取環境、社交和管理 (ESG) 資料。您可以使用針對 AWS 基礎設施最佳化的 Python型爬蟲程式。您可以使用 AWS Batch 來協調大規模爬蟲任務,並使用 Amazon Simple Storage Service (Amazon S3) 進行儲存。下游應用程式可以從 Amazon S3 儲存貯體擷取和存放資料。

使用 Web 爬蟲程式系統從網站擷取 ESG 資料。

該圖顯示以下工作流程:

  1. Amazon EventBridge 排程器會以您排程的間隔啟動爬取程序。

  2. AWS Batch 管理 Web 爬蟲程式任務的執行。 AWS Batch 任務佇列會保留和協調待定的爬蟲任務。

  3. Web 爬取任務會在 Amazon Elastic Container Service (Amazon ECS) 容器中執行 AWS Fargate。任務會在虛擬私有雲端 (VPC) 的公有子網路中執行。

  4. Web 爬蟲程式會爬取目標網站,並擷取 ESG 資料和文件,例如 PDF、CSV 或其他文件檔案。

  5. Web 爬蟲程式會將擷取的資料和原始檔案存放在 Amazon S3 儲存貯體中。

  6. 其他系統或應用程式會擷取或處理 Amazon S3 儲存貯體中儲存的資料和檔案。

Web 爬蟲程式設計和操作

有些網站專為在桌上型電腦或行動裝置上執行而設計。Web 爬蟲程式旨在支援使用桌面使用者代理程式或行動使用者代理程式。這些客服人員可協助您成功向目標網站提出請求。

初始化 Web 爬蟲程式之後,它會執行下列操作:

  1. Web 爬蟲程式會呼叫 setup()方法。此方法會擷取和剖析 robots.txt 檔案。

    注意

    您也可以設定 Web 爬蟲程式來擷取和剖析網站地圖。

  2. Web 爬蟲程式會處理 robots.txt 檔案。如果在 robots.txt 檔案中指定爬蟲延遲,Web 爬蟲程式會擷取桌面使用者代理程式的爬蟲延遲。如果未於 robots.txt 檔案中指定爬蟲程式延遲,則 Web 爬蟲程式會使用隨機延遲。

  3. Web 爬蟲程式會呼叫 crawl()方法,以啟動爬蟲程序。如果佇列中沒有 URLs,則會新增開始 URL。

    注意

    爬蟲程式會持續進行,直到達到最大頁數或耗盡要爬蟲URLs。

  4. 爬蟲程式會處理 URLs。對於佇列中的每個 URL,爬蟲程式會檢查 URL 是否已爬取。

  5. 如果尚未抓取 URL,爬蟲程式會呼叫 crawl_url()方法,如下所示:

    1. 爬蟲程式會檢查 robots.txt 檔案,以判斷是否可以使用桌面使用者代理程式來爬取 URL。

    2. 如果允許,爬蟲程式會嘗試使用桌面使用者代理程式來抓取 URL。

    3. 如果不允許或桌面使用者代理程式無法爬取,則爬蟲程式會檢查 robots.txt 檔案,以判斷是否可以使用行動使用者代理程式來爬取 URL。

    4. 如果允許,爬蟲程式會嘗試使用行動使用者代理程式來抓取 URL。

  6. 爬蟲程式會呼叫 attempt_crawl()方法,以擷取和處理內容。爬蟲程式會將 GET 請求傳送至具有適當標頭的 URL。如果請求失敗,爬蟲程式會使用重試邏輯。

  7. 如果檔案是 HTML 格式,爬蟲程式會呼叫 extract_esg_data()方法。它使用 Beautiful Soup來剖析 HTML 內容。它使用關鍵字比對來擷取環境、社交和管理 (ESG) 資料。

    如果檔案是 PDF,爬蟲程式會呼叫 save_pdf()方法。爬蟲程式會下載 PDF 檔案並將其儲存至 Amazon S3 儲存貯體。

  8. 爬蟲程式會呼叫 extract_news_links()方法。這會尋找並儲存新聞文章、新聞發佈和部落格文章的連結。

  9. 爬蟲程式會呼叫 extract_pdf_links()方法。這會識別並存放 PDF 文件的連結。

  10. 爬蟲程式會呼叫 is_relevant_to_sustainable_finance()方法。這會使用預先定義的關鍵字,檢查新聞或文章是否與永續金融相關。

  11. 每次爬蟲嘗試後,爬蟲程式會使用 delay()方法實作延遲。如果在 robots.txt 檔案中指定了延遲,則會使用該值。否則,它會使用介於 1 到 3 秒之間的隨機延遲。

  12. 爬蟲程式會呼叫 save_esg_data()方法,將 ESG 資料儲存至 CSV 檔案。CSV 檔案會儲存在 Amazon S3 儲存貯體中。

  13. 爬蟲程式會呼叫 save_news_links()方法,將新聞連結儲存到 CSV 檔案,包括相關性資訊。CSV 檔案會儲存在 Amazon S3 儲存貯體中。

  14. 爬蟲程式會呼叫 save_pdf_links()方法,將 PDF 連結儲存至 CSV 檔案。CSV 檔案會儲存在 Amazon S3 儲存貯體中。

批次處理和資料處理

爬蟲程序是以結構化的方式組織和執行。 AWS Batch 會為每個公司指派任務,以便它們以批次方式平行執行。每個批次都著重於單一公司的網域和子網域,因為您已在資料集中識別它們。不過,相同批次中的任務會依序執行,因此不會讓網站產生太多請求。這有助於應用程式更有效率地管理爬取工作負載,並確保為每個公司擷取所有相關資料。

透過將 Web 爬取組織成公司特定的批次,此容器會將收集的資料化。這有助於防止某家公司的資料與其他公司的資料混合。

批次處理可協助應用程式有效地從 Web 收集資料,同時根據目標公司及其各自的 Web 網域,維持清晰的結構和資訊分隔。這種方法有助於確保所收集資料的完整性和可用性,因為它整齊地組織並與適當的公司和網域相關聯。