可扩展的 Web 爬网系统的架构 AWS - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

可扩展的 Web 爬网系统的架构 AWS

以下架构图显示了一个网络爬虫系统,该系统旨在以合乎道德的方式从网站提取环境、社会和治理 (ESG) 数据。你用 Python基于爬虫,针对 AWS 基础架构进行了优化。您 AWS Batch 用来编排大规模抓取任务,并使用亚马逊简单存储服务 (Amazon S3) 进行存储。下游应用程序可以从 Amazon S3 存储桶中提取和存储数据。

使用网络爬虫系统从网站提取 ESG 数据。

图表显示了以下工作流:

  1. Amazon EventBridge Scheduler 按您安排的时间间隔启动抓取过程。

  2. AWS Batch 管理网络爬虫作业的执行。 AWS Batch 作业队列保存并协调待处理的抓取作业。

  3. 网络抓取任务在亚马逊弹性容器服务 (Amazon ECS) 容器中运行。 AWS Fargate这些任务在虚拟私有云 (VPC) 的公有子网中运行。

  4. 网络爬虫抓取目标网站并检索 ESG 数据和文档,例如 PDF、CSV 或其他文档文件。

  5. 网络爬虫将检索到的数据和原始文件存储在 Amazon S3 存储桶中。

  6. 其他系统或应用程序接收或处理 Amazon S3 存储桶中存储的数据和文件。

网络爬虫的设计和操作

有些网站是专门为在台式机或移动设备上运行而设计的。Web Crawler 旨在支持使用桌面用户代理或移动用户代理。这些代理可以帮助您成功地向目标网站发出请求。

网络爬虫初始化后,它会执行以下操作:

  1. 网络爬虫调用该setup()方法。此方法获取并解析 robots.txt 文件。

    注意

    您也可以将网络爬虫配置为获取和解析站点地图。

  2. 网络爬虫会处理 robots.txt 文件。如果在 robots.txt 文件中指定了抓取延迟,则网络爬虫会提取桌面用户代理的抓取延迟。如果未在 robots.txt 文件中指定抓取延迟,则网络爬虫会使用随机延迟。

  3. Web Crawler 调用该crawl()方法,该方法启动搜索过程。如果队列中没 URLs 有,则会添加起始 URL。

    注意

    爬虫会一直持续到达到最大页面数或用完 URLs 可以抓取为止。

  4. 爬虫会处理. URLs 对于队列中的每个 URL,爬虫都会检查该 URL 是否已被抓取。

  5. 如果网址尚未被抓取,则抓取器会按如下方式调用该crawl_url()方法:

    1. 爬虫会检查 robots.txt 文件以确定它是否可以使用桌面用户代理来抓取 URL。

    2. 如果允许,爬虫会尝试使用桌面用户代理抓取 URL。

    3. 如果不允许或者桌面用户代理无法抓取,则爬虫会检查 robots.txt 文件以确定它是否可以使用移动用户代理来抓取 URL。

    4. 如果允许,抓取工具会尝试使用移动用户代理来抓取 URL。

  6. Crawler 调用该attempt_crawl()方法,该方法检索和处理内容。抓取工具向 URL 发送带有相应标头的 GET 请求。如果请求失败,Crawler 将使用重试逻辑。

  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 文件保存在亚马逊 S3 存储桶中。

  13. Crawler 调用该save_news_links()方法将新闻链接保存到 CSV 文件,包括相关性信息。CSV 文件保存在亚马逊 S3 存储桶中。

  14. Crawler 调用该save_pdf_links()方法将 PDF 链接保存到 CSV 文件。CSV 文件保存在亚马逊 S3 存储桶中。

批处理和数据处理

抓取过程是以结构化的方式组织和执行的。 AWS Batch 为每家公司分配任务,以便它们分批并行运行。每批都侧重于一家公司的域名和子域名,正如您在数据集中识别的那样。但是,同一批次中的作业会按顺序运行,这样它们就不会因为过多的请求而淹没网站。这有助于应用程序更有效地管理抓取工作负载,并确保捕获每家公司的所有相关数据。

通过将网络爬网组织成公司特定的批次,从而对收集的数据进行容器化。这有助于防止一家公司的数据与其他公司的数据混在一起。

批处理可帮助应用程序高效地从网络收集数据,同时根据目标公司及其各自的网络域保持清晰的结构和信息分离。这种方法有助于确保所收集数据的完整性和可用性,因为它组织得井井有条,并且与相应的公司和域名相关联。