Git Product home page Git Product logo

projetoscrapingesports's Introduction

Projeto Scraping E-sports

Esse projeto tem como objetivo desenvolver um processo de web crawling para estruturar dados de portais concorrentes de notícias, agregar métricas sobre esses dados e disponibilizar informações.

Tecnologias

Aqui estão as tecnologias usadas neste projeto.

  • Python 3.10.4
  • MongoDB 5.0.8

Desenvolvimento

  1. Definição da área no qual serão extraído os dados.

    • Games:
      • League Of Legends
      • Counter-Strike: Global Offensive

  2. Procurar sites com estruturas parecidas, ou seja, contiam os mesmos elementos como Autor, Data, Tags entre outos. Foram escolhidos:

  3. Escolha de Framework e Pacotes auxiliares.

    • Framework:
      • Scrapy - Muito usado no mercado, Rápido, Facilmente extensível e Diversas alternativas para deploy.
    • Pacotes Auxiliares
      • Pymongo - Criado pela MongoDB, possui diversas funções que auxiliam durante o uso do MongoDB via python.

  4. Desenvolvimento e organização do código.

    O programa foi desenvolvido de forma modular, afim de facilitar na detecção de erros, manutenção de código e reutilização de funções.

    │   mongo_script.txt #Comandos para criação de Database e Collection para o MongoDB
    │   README.md #Documentação
    │   requirements.txt #Pacotes e versões necessários para rodar o programa 
    │   run.py #Script que inicia todo o programa
    │   scrapy.cfg #Configurações do Scrapy
    │
    ├───esports
    │   │   items.py #Classe para padronização e manipulação dos dados
    │   │   pipelines.py #Classe para transformação e inserção de cada item em nossa Collection
    │   │   settings.py #Setados nossas configurações de projeto
    │   │   __init__.py
    │   │
    │   └───spiders
    │           maisesports.py #Classe criada para a extração de dados e retorno de item para o pipeline
    │           techtudo.py #Classe criada para a extração de dados e retorno de item para o pipeline
    │           __init__.py
    │
    └───logs #Pasta onde fica localizado os logs do sistema, são gerados automaticamente, sendo registrados pelo dia da execução
            2022-05-27.log



  1. Extração, Transformação e Carregamento

    • Dados extraídos:

      • Site
      • Url
      • Título
      • Autor
      • Data de Publicação
      • Data de Extração
      • Tags
    • Transformações aplicadas:

      • Padronização da Data de Publicação
      • Remoção de espaços desnecessários nas tags
      • Caso o retorno das tags sejam listas vazias, definimos como tipo None
      • Verificação da quantidade de Autores
    • Carregamento dos dados:

      • Dados carregados ao final de sua passagem pelo pipeline
      • Somente são carregados dados novos, que não possuem registro em nosso Banco de Dados

  2. Desempenho do programa

    Nossos logs salvam tudo que o programa execulta, lá podemos encontrar a métrica de tempo de execução, onde ficaram da seguinte maneira:

    • Techtudo Esports

      • Quantidade de Noticias - 19
      • Tempo de Execução - 25.71 segundos
    • MaisEsports

      • Quantidade de Noticias - 24
      • Tempo de Execução - 33.26 segundos

    O tempo de execução pode variar de acordo com os hardwares da máquina e velocidade da internet.

  3. Deploy e Escalabilidade

    Para o deploy da aplicação, temos 3 alternativas:

    • Implantando em um servidor Scrapyd(indicado pelo framework)
      • Facilidade no deploy
      • Monitoramento
      • Agendamento via requisição HTTP/GET
      • Baixa Escalabilidade
    • Implantando no Zyte Scrapy Cloud(indicado pelo framework)
      • Servidor em Nuvem
      • Interface gráfica
      • Gerenciar spiders, revisar itens, logs e estatísticas dos scrapings.
      • Alta Escalabilidade
    • Agendando nosso run.py em um servidor
      • Maior economia
      • Facilidade no deploy
      • Baixa Escalabilidade

Começando

  • Clone o repositório
$ git clone https://github.com/andreventura02/ProjetoScrapingEsports.git
  • Abra o terminal e navegue até a pasta clonada
$ pip install -r requirements.txt
  • Caso esteja utilizando linux, será necessário executar o comando abaixo
$ sudo apt install python3-scrapy
  • Em seguida, execute os comandos localizados no arquivo mongo_script.txt para criar a Database e a Collection.

  • Configure a conexão e modo de extração no arquivo esports/settings.py

    • MONGO_URI - String de Conexão
    • MONGO_DATABASE - Nome da Database
    • ITEM_DAY - True raspa apenas os dados do dia, caso seja False ele raspa todos os dados disponíveis
  • Necessário a criação de uma pasta chamada 'logs/'

  • Após a configuração, vá até a raiz da pasta e execute

$ python run.py

Análises Possíveis

Em nossos dados, podemos buscar por padrões, como:

  • Processamento de Linguagem Natural nos títulos
  • Analisar quais as tags mais utilizadas em ambos os sites
  • Quais horários as noticias são postadas
  • Quais os dias da semana em que mais são postados as noticias

projetoscrapingesports's People

Contributors

andreventura02 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.