/web-scraping-board-game-geek

Raspagem de dados no site do BGG - Os tops#1000 jogos e requisições nos detalhes sobre eles. Os dados obtidos foram adicionados no MySQL e exportados em csv.

Primary LanguagePython

BoardGameGeek (BGG) Web Scraping.


Sumário


Habilidades

  • Utilizar o terminal interativo do Python;
  • Escrever seus próprios módulos e importá-los em outros códigos;
  • Aplicar técnicas de raspagem de dados;
  • Extrair dados de conteúdo HTML;
  • Armazenar os dados obtidos em um banco de dados. (MySQL)
  • Fazer análises usando o pandas.
  • Exportar gráficos
  • Exportar os dados obtidos para o excel

O que foi desenvolvido

O projeto foi feito para exercitar minha habilidade de raspagem de dados e matar a minha curiosidade de saber quais eram os jogos de tabuleiro mais bem rankeados, mais populares e mais pesados do top 1000. Além de detalhes como ano, popularidade e com quantas pessoas é o mais recomendado para jogar. Eu amo jogar BG mas nunca tinha feito um estudo sobre os mais bem ranqueados, comecei a estudar o assunto de raspagem de dados e notei que eu poderia matar a curiosidade e exerciar ao mesmo tempo.

A lista com o rank dos jogos pode ser obtido no BoardGame Rank.


Estrutura de Arquivos e Pastas

Os Arquivos

Na pasta raiz:

  • requirements.txt e dev-equirements.txt para adicionar as dependências que foram utilizadas no projeto.

  • database.py é responsável pela conexão com o banco de dados;

  • query.py por adicionar as informações coletadas no banco de dados

Na pasta Analyzer:

  • corr.png e best_for_chart_bar com as imagens plotadas de correlação e gráfico de barra de quantidade indicada de jogadores, respetivamente.

  • bg_analyze.ipynb, um arquivo jupyter notebook mostrando as análises feitas: jogo mais popular, jogo menos popular, jogo mais pesado, jogo mais leve e os dois gráficos acima (de correlação e best for). Todas as funções implementadas estão no arquivo pandas_analyzer.py

  • database.py é responsável pela conexão com o banco de dados;

  • query.py por adicionar as informações coletadas no banco de dados

As Pastas:

Importer: Funções responsáveis pela raspagem de dados.

Exporter: Funções responsável por transformar os dados salvos no Banco de Dados MySQL em csv

Analyzer: Análises e gráficos das informações coletadas da lista de jogos, foi usado o pandas e o seaborn.


Como desenvolver

  1. clone o repositório
git clone git@github.com:rodrigoaqueiroz/web-scraping-board-game-geek.git
  • Entre na pasta do repositório que você acabou de clonar:
cd web-scraping-board-game-geek
  1. crie o ambiente virtual
$ python3 -m venv .venv
  1. ative o ambiente virtual
$ source .venv/bin/activate
  1. instale as dependências no ambiente virtual
$ python3 -m pip install -r requirements.txt

O arquivo requirements.txt contém todas as dependências que foram utilizadas no projeto.


Raspagem

A lista de jogos a ser raspadas está disponível na aba Browse/All BoardGames no BGG: https://boardgamegeek.com/browse/boardgame. Os jogos foram salvos no banco de dados MySQL, usando as funções python implementadas no módulo query.py, a conexão com o DB está no módulo database.py


Contatos:

Rodrigo de A. Queiroz