Arquitetura para um sistema escalável de rastreamento da web em AWS - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Arquitetura para um sistema escalável de rastreamento da web em AWS

O diagrama de arquitetura a seguir mostra um sistema de rastreador da Web projetado para extrair de forma ética dados ambientais, sociais e de governança (ESG) dos sites. Você usa um Pythonrastreador baseado que é otimizado para AWS infraestrutura. Você usa AWS Batch para orquestrar os trabalhos de rastreamento em grande escala e usa o Amazon Simple Storage Service (Amazon S3) para armazenamento. Os aplicativos downstream podem ingerir e armazenar os dados do bucket do Amazon S3.

Usando um sistema de rastreamento da web para extrair dados ESG de sites.

O diagrama mostra o seguinte fluxo de trabalho:

  1. O Amazon EventBridge Scheduler inicia o processo de rastreamento em um intervalo programado por você.

  2. AWS Batch gerencia a execução dos trabalhos do rastreador da web. A fila de AWS Batch trabalhos retém e orquestra os trabalhos de rastreamento pendentes.

  3. Os trabalhos de rastreamento da web são executados em contêineres do Amazon Elastic Container Service (Amazon ECS) em. AWS Fargate Os trabalhos são executados em uma sub-rede pública de uma nuvem privada virtual (VPC).

  4. O rastreador da web rastreia o site de destino e recupera dados e documentos do ESG, como PDF, CSV ou outros arquivos de documentos.

  5. O rastreador da web armazena os dados recuperados e os arquivos brutos em um bucket do Amazon S3.

  6. Outros sistemas ou aplicativos ingerem ou processam os dados e arquivos armazenados no bucket do Amazon S3.

Design e operações de rastreadores da Web

Alguns sites são projetados especificamente para serem executados em desktops ou dispositivos móveis. O rastreador da Web foi projetado para oferecer suporte ao uso de um agente de usuário de desktop ou de um agente de usuário móvel. Esses agentes ajudam você a fazer solicitações com sucesso ao site de destino.

Depois que o rastreador da web é inicializado, ele executa as seguintes operações:

  1. O rastreador da web chama o setup() método. Esse método busca e analisa o arquivo robots.txt.

    nota

    Você também pode configurar o rastreador da web para buscar e analisar o mapa do site.

  2. O rastreador da web processa o arquivo robots.txt. Se um atraso de rastreamento for especificado no arquivo robots.txt, o rastreador da Web extrairá o atraso de rastreamento para o agente de usuário de desktop. Se um atraso de rastreamento não for especificado no arquivo robots.txt, o rastreador da Web usará um atraso aleatório.

  3. O rastreador da web chama o crawl() método, que inicia o processo de rastreamento. Se não URLs houver nenhum na fila, ele adiciona a URL inicial.

    nota

    O rastreador continua até atingir o número máximo de páginas ou ficar sem espaço URLs para rastrear.

  4. O rastreador processa o. URLs Para cada URL na fila, o rastreador verifica se a URL já foi rastreada.

  5. Se um URL não tiver sido rastreado, o rastreador chama o método da crawl_url() seguinte forma:

    1. O rastreador verifica o arquivo robots.txt para determinar se ele pode usar o agente de usuário de desktop para rastrear a URL.

    2. Se permitido, o rastreador tentará rastrear o URL usando o agente de usuário de desktop.

    3. Se não for permitido ou se o user agent de desktop falhar no rastreamento, o rastreador verificará o arquivo robots.txt para determinar se ele pode usar o agente de usuário móvel para rastrear o URL.

    4. Se permitido, o rastreador tentará rastrear o URL usando o agente de usuário móvel.

  6. O rastreador chama o attempt_crawl() método, que recupera e processa o conteúdo. O rastreador envia uma solicitação GET para o URL com os cabeçalhos apropriados. Se a solicitação falhar, o rastreador usa a lógica de repetição.

  7. Se o arquivo estiver no formato HTML, o rastreador chamará o extract_esg_data() método. Ele usa Beautiful Souppara analisar o conteúdo HTML. Ele extrai dados ambientais, sociais e de governança (ESG) usando a correspondência de palavras-chave.

    Se o arquivo for um PDF, o rastreador chamará o save_pdf() método. O rastreador baixa e salva o arquivo PDF no bucket do Amazon S3.

  8. O rastreador chama o extract_news_links() método. Isso encontra e armazena links para artigos de notícias, comunicados à imprensa e postagens de blog.

  9. O rastreador chama o extract_pdf_links() método. Isso identifica e armazena links para documentos PDF.

  10. O rastreador chama o is_relevant_to_sustainable_finance() método. Isso verifica se as notícias ou artigos estão relacionados a finanças sustentáveis usando palavras-chave predefinidas.

  11. Depois de cada tentativa de rastreamento, o rastreador implementa um atraso usando o método. delay() Se um atraso foi especificado no arquivo robots.txt, ele usa esse valor. Caso contrário, ele usa um atraso aleatório entre 1 e 3 segundos.

  12. O rastreador chama o save_esg_data() método para salvar os dados do ESG em um arquivo CSV. O arquivo CSV é salvo no bucket do Amazon S3.

  13. O rastreador chama o save_news_links() método para salvar os links de notícias em um arquivo CSV, incluindo informações relevantes. O arquivo CSV é salvo no bucket do Amazon S3.

  14. O rastreador chama o save_pdf_links() método para salvar os links do PDF em um arquivo CSV. O arquivo CSV é salvo no bucket do Amazon S3.

Tratamento em lotes e processamento de dados

O processo de rastreamento é organizado e executado de forma estruturada. AWS Batch atribui os trabalhos de cada empresa para que sejam executados paralelamente, em lotes. Cada lote se concentra no domínio e nos subdomínios de uma única empresa, conforme você os identificou em seu conjunto de dados. No entanto, os trabalhos no mesmo lote são executados sequencialmente para que não inundem o site com muitas solicitações. Isso ajuda o aplicativo a gerenciar a carga de trabalho de rastreamento com mais eficiência e a garantir que todos os dados relevantes sejam capturados para cada empresa.

Ao organizar o rastreamento da web em lotes específicos da empresa, isso conteineriza os dados coletados. Isso ajuda a evitar que os dados de uma empresa sejam misturados com dados de outras empresas.

O processamento em lotes ajuda o aplicativo a coletar dados da web de forma eficiente, mantendo uma estrutura clara e uma separação de informações com base nas empresas-alvo e seus respectivos domínios da web. Essa abordagem ajuda a garantir a integridade e a usabilidade dos dados coletados, pois estão bem organizados e associados à empresa e aos domínios apropriados.