Este repositório compõe projeto de pesquisa com foco empírico nas eleições brasileiras de 2018 do grupo de pesquisa Resocie do Instituto de Ciência Política - IPOL com o apoio técnico do Departamento de Computação - CIC da Universidade de Brasília - UnB.
O projeto consiste na coleta sistemática de informações quantitativas da plataforma Instagram com o objetivo de subsidiar a análise do comportamento político de alguns atores da cena eleitoral durante o período de campanha. Além de seu objetivo finalístico para a coleta de dados, o projeto tem também por intuito servir de material de estudo dos alunos da disciplina Engenharia de Software do Departamento de Ciência da Computação da UnB no 1º semestre de 2018.
As instruções a seguir trazem orientações para aqueles que quiserem contribuir com a iniciativa.
Um bom processo de trabalho em desenvolvimento de software começa com a preparação de um ambiente adequado de programação.
O Henrique Bastos fez uma postagem super relevante sobre organização de ambientes python. Vale a leitura.
$ git clone git@github.com:code4pol/instagram-data-monitor.git
$ mkvirtualenv instagram-data-monitor
$ workon instagram-data-monitor
Todas as bibliotecas de que o projeto depende estão listadas no arquivo requirements.txt. Para instalá-las, execute:
$ cd instagram-data-monitor
$ pip install -r requirements.txt
Acesse a página de desenvolvedores do Instagram para registrar a aplicação que lhe possibilitará acesso à API da plataforma.
Após registro da aplicação, atualize o arquivo instagram.py com suas infos particulares.
insta_user='YOUR_USERNAME' # Seu usuário no Instagram
insta_password='YOUR_PASSWORD' # Sua senha no Instagram
client_id='YOUR_CLIENT_ID'. # O client_id fornecido pelo Instagram para a aplicação registrada
redirect_uri='YOUR_REDIRECT_ID' # A _redirect URI_ informada por você para a aplicação registrada.
# Não sabe o que é isso? Faz parte do protocolo OAuth2. Google it!
O projeto utiliza a biblioteca Selenium para obteção do access_token necessário para acesso à API, o que requer a utilização de um navegador web. Foi escolhido o Google Chrome em sua opção headless. É preciso que você ajuste o path de execução do navegador na opção chrome_options.binary_location
do arquivo instagram.py. Caso você não tenha o Google Chrome instalado, será necessário configurar o Selenium para utilização de outra opção de web browser.
Independente do browser escolhido, é necessário o download do webdriver necessário para que o Selenium saiba interagir com ele. No caso do Google Chrome, os drivers estão disponíveis na página do projeto. Percebam que consta atualmente em nosso repositório apenas os drivers do Google Chrome para o MacOS. Caso você utilize outro sistema operacional, também que fazer o download de driver compatível.
Todos os testes foram desenvolvidos utilizando a biblioteca unittest nativa do Python. Para executá-los, a partir da pasta raiz do projeto, execute:
$ python -m unittest discover tests
Sugiro darem uma olhada nesta ótima introdução ao unittest
Este é apenas um esqueleto de projeto para que o grupo comece a trabalhar. Resta ainda muito trabalho a ser feito. Algumas ideias:
- Corrigir testes quebrados
- Complementar testes
- Remover código hard-coded
- Corrigir código replicado
- Otimizar execução de tarefas que não precisam ser executadas várias vezes
- Remover mensagens de DeprecationWarning
- Expandir quantidade dos dados buscados
- Explorar novas possibilidades de coleta
- Avaliar estratégia de uso da API. Qual a diferença da estratégia utilizada para o projeto twitter-data-monitor?
- Criar interface CLI para execução do programa
- Implementar mecanismo para automatização da coleta recorrente dos dados
- Persistir dados coletados em base estruturada
- Viabilizar interface de integração da base de dados criada com canal para geração de informações visuais
Código disponível sob Licença MIT