의 확장 가능한 웹 크롤링 시스템을 위한 아키텍처 AWS - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의 확장 가능한 웹 크롤링 시스템을 위한 아키텍처 AWS

다음 아키텍처 다이어그램은 웹 사이트에서 환경, 사회 및 거버넌스(ESG) 데이터를 윤리적으로 추출하도록 설계된 웹 크롤러 시스템을 보여줍니다. AWS 인프라에 최적화된 Python기반 크롤러를 사용합니다. AWS Batch 를 사용하여 대규모 크롤링 작업을 오케스트레이션하고 Amazon Simple Storage Service(Amazon S3)를 스토리지에 사용합니다. 다운스트림 애플리케이션은 Amazon S3 버킷에서 데이터를 수집하고 저장할 수 있습니다.

웹 크롤러 시스템을 사용하여 웹 사이트에서 ESG 데이터 추출.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. Amazon EventBridge 스케줄러는 사용자가 예약한 간격으로 크롤링 프로세스를 시작합니다.

  2. AWS Batch 는 웹 크롤러 작업의 실행을 관리합니다. AWS Batch 작업 대기열은 보류 중인 크롤링 작업을 보류하고 오케스트레이션합니다.

  3. 웹 크롤링 작업은 Amazon Elastic Container Service(Amazon ECS) 컨테이너에서 실행됩니다 AWS Fargate. 작업은 Virtual Private Cloud(VPC)의 퍼블릭 서브넷에서 실행됩니다.

  4. 웹 크롤러는 대상 웹 사이트를 크롤링하고 PDF, CSV 또는 기타 문서 파일과 같은 ESG 데이터 및 문서를 검색합니다.

  5. 웹 크롤러는 검색된 데이터와 원시 파일을 Amazon S3 버킷에 저장합니다.

  6. 다른 시스템 또는 애플리케이션은 Amazon S3 버킷에 저장된 데이터와 파일을 수집하거나 처리합니다.

웹 크롤러 설계 및 작업

일부 웹 사이트는 데스크톱 또는 모바일 디바이스에서 실행되도록 특별히 설계되었습니다. 웹 크롤러는 데스크톱 사용자 에이전트 또는 모바일 사용자 에이전트 사용을 지원하도록 설계되었습니다. 이러한 에이전트는 대상 웹 사이트에 성공적으로 요청하는 데 도움이 됩니다.

웹 크롤러가 초기화되면 다음 작업을 수행합니다.

  1. 웹 크롤러가 setup() 메서드를 호출합니다. 이 메서드는 robots.txt 파일을 가져오고 구문 분석합니다.

    참고

    사이트맵을 가져오고 구문 분석하도록 웹 크롤러를 구성할 수도 있습니다.

  2. 웹 크롤러는 robots.txt 파일을 처리합니다. robots.txt 파일에 크롤링 지연이 지정된 경우 웹 크롤러는 데스크톱 사용자 에이전트의 크롤링 지연을 추출합니다. robots.txt 파일에 크롤링 지연이 지정되지 않은 경우 웹 크롤러는 임의의 지연을 사용합니다.

  3. 웹 크롤러는 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() 메서드를 호출합니다. 크롤러는 적절한 헤더가 있는 URL로 GET 요청을 보냅니다. 요청이 실패하면 크롤러는 재시도 로직을 사용합니다.

  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 는 병렬로 배치로 실행되도록 각 회사에 작업을 할당합니다. 각 배치는 데이터 세트에서 식별한 단일 회사의 도메인과 하위 도메인에 중점을 둡니다. 그러나 동일한 배치의 작업은 순차적으로 실행되므로 너무 많은 요청으로 웹 사이트가 중복되지 않습니다. 이를 통해 애플리케이션은 크롤링 워크로드를 보다 효율적으로 관리하고 각 회사에 대해 모든 관련 데이터를 캡처할 수 있습니다.

웹 크롤링을 회사별 배치로 구성하면 수집된 데이터가 컨테이너화됩니다. 이렇게 하면 한 회사의 데이터가 다른 회사의 데이터와 혼합되는 것을 방지할 수 있습니다.

배치를 사용하면 애플리케이션이 웹에서 데이터를 효율적으로 수집하는 동시에 대상 회사 및 해당 웹 도메인을 기반으로 정보의 명확한 구조와 분리를 유지할 수 있습니다. 이 접근 방식은 수집된 데이터의 무결성과 유용성을 보장하는 데 도움이 됩니다. 이는 깔끔하게 구성되고 적절한 회사 및 도메인과 연결되어 있기 때문입니다.