Projeto para extração de dados de repositórios públicos contidos no GitHub. O código se utiliza de técnicas de web scraping para efetuar a extração de dados de páginas html dos projetos do GitHub.
Autor: Rafael Ribeiro
Principais tecnologias e bibliotecas utilizadas
- Python 3.7 (3.7.0)
- Pipenv (version 2018.05.18)
- Virtualenv (16.7.2)
- BeautifulSoup4 (4.8.0)
- Anytree (2.6.0)
Funcionalidades
- Extração de páginas de repositórios públicos do GitHub usando web scraping.
- Extração e apresentação em arquivo da estrutura de pastas/arquivos do repositório.
- Extração, compilação e apresentação de informações do repositório, como:
- Quantidade de linhas dos arquivos consolidados por extensão de arquivo.
- Percentual de linhas de arquivos por extensão de arquivo em relação ao repositório.
- Volume de bytes consolidados por extensão de arquivo.
- Percentual de bytes de arquivos por extensão de arquivo em relação ao volume do repositório.
Como executar/utilizar
Repositório: https://github.com/rafa-ribeiro/github-web-scraping
-
Para utilizar o projeto, é necessário efetuar o clone do projeto no link acima.
-
Baixar as dependências do projeto listadas no arquivo Pipfile, para isso pode-se utilizar o comando:
$ pipenv install
-
Com as dependências devidamente instaladas, para execução do projeto, é necessário mover o arquivo de listagem dos repositórios para o seguinte diretório:
<PATH_PROJETO>/webscraping/resources/repositories.txt
Obs: O nome do arquivo deve ser 'repositories.txt'
-
Para execução, entrar na pasta do projeto e utilizar o comando:
$ python app.py
-
Após a execução finalizada, os arquivos gerados estarão armazenados em:
<PATH_PROJETO>/webscraping/resources/<DONO_REPO>_<NOME_REPO>.txt
-
Na pasta <PATH_PROJETO>/webscraping/resources/, há exemplo do arquivo de entrada de repositórios e exemplos dos arquivos gerados pela aplicação.
Melhorias futuras
-
Performance.
Otimizar as requisições HTTP às páginas do GitHub para que sejam executadas de forma assíncrona, sempre que possível. Para isso, uma possibilidade é a utilização da biblioteca Scrapy, acessível em https://scrapy.org/
-
Teste unitário.
Desenvolvimento de testes de unidade para garantir a assertividade da aplicação na extração de informações do GitHub.
Os testes unitários existentes estão agrupadas na pasta tests. Pode-se utilziar o seguinte comando para executá-los:
$ python -m nose2