

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# でのスケーラブルなウェブクローリングシステムのアーキテクチャ AWS
<a name="architecture"></a>

次のアーキテクチャ図は、ウェブサイトから環境、社会、ガバナンス (ESG) データを倫理的に抽出するように設計されたウェブクローラーシステムを示しています。 AWS インフラストラクチャ用に最適化された Pythonベースのクローラを使用します。 AWS Batch を使用して大規模なクローリングジョブをオーケストレーションし、ストレージに Amazon Simple Storage Service (Amazon S3) を使用します。ダウンストリームアプリケーションは、Amazon S3 バケットからデータを取り込んで保存できます。



![ウェブクローラーシステムを使用してウェブサイトから ESG データを抽出する。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/web-crawling-system-esg-data/images/architecture-diagram.png)


この図表は、次のワークフローを示しています:

1. Amazon EventBridge スケジューラは、スケジュールされた間隔でクローリングプロセスを開始します。

1. AWS Batch は、ウェブクローラージョブの実行を管理します。 AWS Batch ジョブキューは、保留中のクローリングジョブを保持およびオーケストレーションします。

1. ウェブクロールジョブは、Amazon Elastic Container Service (Amazon ECS) コンテナで実行されます AWS Fargate。ジョブは、Virtual Private Cloud (VPC) のパブリックサブネットで実行されます。

1. ウェブクローラーはターゲットウェブサイトをクロールし、PDF、CSV、またはその他のドキュメントファイルなどの ESG データおよびドキュメントを取得します。

1. ウェブクローラーは、取得したデータと raw ファイルを Amazon S3 バケットに保存します。

1. 他のシステムまたはアプリケーションは、Amazon S3 バケットに保存されたデータとファイルを取り込み、処理します。

## ウェブクローラーの設計と運用
<a name="architecture-crawler"></a>

一部のウェブサイトは、デスクトップまたはモバイルデバイスで実行するように特別に設計されています。ウェブクローラーは、デスクトップユーザーエージェントまたはモバイルユーザーエージェントの使用をサポートするように設計されています。これらのエージェントは、ターゲットウェブサイトへのリクエストを正常に行うのに役立ちます。

ウェブクローラーが初期化されると、次のオペレーションが実行されます。

1. ウェブクローラーは `setup()`メソッドを呼び出します。このメソッドは、robots.txt ファイルを取得して解析します。
**注記**  
サイトマップを取得して解析するようにウェブクローラーを設定することもできます。

1. ウェブクローラーは robots.txt ファイルを処理します。robots.txt ファイルでクロール遅延が指定されている場合、ウェブクローラーはデスクトップユーザーエージェントのクロール遅延を抽出します。robots.txt ファイルでクロール遅延が指定されていない場合、ウェブクローラーはランダムな遅延を使用します。

1. ウェブクローラは `crawl()`メソッドを呼び出し、クローリングプロセスを開始します。キューに URLs がない場合は、開始 URL を追加します。
**注記**  
クローラは、最大ページ数に達するか、クロールする URLs が不足するまで続行されます。

1. クローラは URLs。キュー内の各 URL について、クローラーは URL がすでにクロールされているかどうかを確認します。

1. URL がクロールされていない場合、クローラは次のように `crawl_url()`メソッドを呼び出します。

   1. クローラは robots.txt ファイルをチェックして、デスクトップユーザーエージェントを使用して URL をクロールできるかどうかを判断します。

   1. 許可されている場合、クローラはデスクトップユーザーエージェントを使用して URL のクロールを試みます。

   1. 許可されていない場合、またはデスクトップユーザーエージェントがクロールに失敗した場合、クローラは robots.txt ファイルをチェックして、モバイルユーザーエージェントを使用して URL をクロールできるかどうかを判断します。

   1. 許可されている場合、クローラはモバイルユーザーエージェントを使用して URL のクロールを試みます。

1. クローラは `attempt_crawl()`メソッドを呼び出し、コンテンツを取得して処理します。クローラは、適切なヘッダーを含む GET リクエストを URL に送信します。リクエストが失敗した場合、クローラは再試行ロジックを使用します。

1. ファイルが HTML 形式の場合、クローラは `extract_esg_data()`メソッドを呼び出します。[https://pypi.org/project/beautifulsoup4/](https://pypi.org/project/beautifulsoup4/) を使用して HTML コンテンツを解析します。キーワードマッチングを使用して、環境、社会、ガバナンス (ESG) データを抽出します。

   ファイルが PDF の場合、クローラは `save_pdf()`メソッドを呼び出します。クローラは PDF ファイルをダウンロードして Amazon S3 バケットに保存します。

1. クローラは `extract_news_links()`メソッドを呼び出します。これにより、ニュース記事、プレスリリース、ブログ投稿へのリンクが検索され、保存されます。

1. クローラは `extract_pdf_links()`メソッドを呼び出します。これにより、PDF ドキュメントへのリンクが識別され、保存されます。

1. クローラは `is_relevant_to_sustainable_finance()`メソッドを呼び出します。これにより、事前定義されたキーワードを使用して、ニュースまたは記事が持続可能な金融に関連しているかどうかがチェックされます。

1. クロールが試行されるたびに、クローラは `delay()`メソッドを使用して遅延を実装します。robots.txt ファイルで遅延が指定されている場合、その値が使用されます。それ以外の場合は、1～3 秒のランダムな遅延を使用します。

1. クローラは、 `save_esg_data()`メソッドを呼び出して ESG データを CSV ファイルに保存します。CSV ファイルは Amazon S3 バケットに保存されます。

1. クローラは `save_news_links()`メソッドを呼び出して、関連性情報を含む CSV ファイルにニュースリンクを保存します。CSV ファイルは Amazon S3 バケットに保存されます。

1. クローラは `save_pdf_links()`メソッドを呼び出して PDF リンクを CSV ファイルに保存します。CSV ファイルは Amazon S3 バケットに保存されます。

## バッチ処理とデータ処理
<a name="architecture-batching"></a>

クローリングプロセスは構造化された方法で整理および実行されます。 AWS Batch は、ジョブを各会社のジョブを割り当てて、バッチで並行して実行します。各バッチは、データセットで特定した 1 つの会社のドメインとサブドメインに焦点を当てています。ただし、同じバッチ内のジョブは順番に実行されるため、リクエストが多すぎてウェブサイトに溢れません。これにより、アプリケーションはクローリングワークロードをより効率的に管理し、関連するすべてのデータを会社ごとに確実にキャプチャできます。

ウェブクロールを会社固有のバッチに整理することで、収集されたデータをコンテナ化します。これにより、ある会社のデータが他の会社のデータと混在するのを防ぐことができます。

バッチ処理は、アプリケーションがウェブから効率的にデータを収集し、ターゲット企業とそれぞれのウェブドメインに基づいて情報の明確な構造と分離を維持するのに役立ちます。このアプローチは、収集されたデータの整合性と使いやすさを確保するのに役立ちます。これは、データが整理され、適切な会社とドメインに関連付けられているためです。