Automatização de acesso à plataforma Colaborar da Anhanguera para exportar datas de atividades em formato iCalendar (ICS) usando Selenium.
Este projeto tem como objetivo aprofundar conhecimentos em Python, Selenium e boas práticas de organização e documentação, por meio do desenvolvimento de uma aplicação para automatizar o acompanhamento das pendências do meu curso. Utilizando Selenium, a aplicação acessa o ambiente acadêmico, extrai as informações relevantes e as organiza em um arquivo ICS (iCalendar) para importar para o Google Calendar.
- Selenium: Manipulação de elementos, tratamento de exceções e boas práticas em automação.
- Organização: Estruturação modular e reutilização de código.
- Documentação: Registro claro das etapas para facilitar manutenção.
- Clean Architecture: Separação de responsabilidades por camadas, promovendo organização e manutenção do código.
- Boas Práticas: Adoção de tipagem forte, validações, linting com Ruff e leitura facilitada do código.
Para usar este projeto, recomenda-se o Pyenv para gerenciar versões do Python e o uv para as dependências do pyproject.toml. Ambos são opcionais, pois você pode usar a versão do Python do sistema e instalar dependências via pip com o requirements.txt.
Para começar, clone o repositório do projeto:
git clone https://github.com/pagueru/py-selenium-scraper
cd py-selenium-scraperInstalação recomendada (usando uv):
uv sync --all-extrasAlternativamente, você pode instalar as dependências via requirements.txt:
pip install -r requirements.txtRenomeie o arquivo settings_template.yml para settings.yml com suas informações:
# Configurações do ambiente
profile_mode: info
# Data de acesso ao portal
usuario: SEU_CPF
senha: SUA_SENHA
# Informações do aluno
matricula: SUA_MATRICULA
# Informações do curso
nome_curso: NOME_DO_CURSO
semestre: 1o
nome_aluno: SEU_NOME
# URL's do portal
colaborar_url: https://www.colaboraread.com.br/login/auth
colaborar_index_url: https://www.colaboraread.com.br/aluno/timeline/index
# Atividades ignoradas
atividades_ignoradas: [
Conteúdo WEB,
Leitura,
Engajamento AVA,
Teleaula,
Live
]uv run main.pyNota: O .gif demonstra a execução com Poetry, mas atualmente utilizamos uv. Apesar da mudança, o comportamento final permanece o mesmo e pode ser adaptado conforme o ambiente.
O script acessa o portal e exporta as atividades para um arquivo ICS. Os dados gerados também estarão disponíveis em JSON e YAML para melhor visualização.
Abaixo está um exemplo de como os dados são organizados no formato YAML, com detalhes sobre as atividades, períodos e tipos de tarefas:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Raphael Coelho//5o Superior de Tecnologia em Inteligência \
de Mercado e Análise de Dados//PT-BR
BEGIN:VEVENT
SUMMARY:Início Relatório de Aula Prática - Web Analytics
DTSTART;VALUE=DATE:20250203
DESCRIPTION:Atividade da disciplina Web Analytics
END:VCALENDAR
- O campo
PRODIDfoi quebrado para melhor visualização.
Formato YAML
Web Analytics:
atividades:
- nome_atividade: Relatório de Aula Prática - Web Analytics
periodo: 03/02/25 - 17/05/25
tipo_atividade: Portfólio
- nome_atividade: Av1 - Web Analytics
periodo: 14/04/25 - 26/05/25
tipo_atividade: Avaliação Virtual
- nome_atividade: Av2 - Web Analytics
periodo: 14/04/25 - 02/06/25
tipo_atividade: Avaliação Virtual
- nome_atividade: Av - Subst. 1 - Web Analytics
periodo: 03/06/25 - 07/06/25
tipo_atividade: Avaliação Virtual
- nome_atividade: Av - Subst. 2 - Web Analytics
periodo: 03/06/25 - 07/06/25
tipo_atividade: Avaliação Virtual
- nome_atividade: Prova Presencial - 1º Chamada - Web Analytics
periodo: 24/05/25 - 31/05/25
tipo_atividade: Prova Presencial da Disciplina
- nome_atividade: Prova Presencial - 2º Chamada - Web Analytics
periodo: 09/06/25 - 14/06/25
tipo_atividade: Prova Presencial da Disciplina
- nome_atividade: Prova Presencial - Recuperação - Web Analytics
periodo: 16/06/25 - 21/06/25
tipo_atividade: Prova Presencial da Disciplina
link_disciplina: https://www.colaboraread.com.br/aluno/timeline/index/XXXXXXXXXX?ofertaDisciplinaId=XXXXXXXFormato JSON
"Web Analytics": {
"link_disciplina": "https://www.colaboraread.com.br/aluno/timeline/index/XXXXXXXXXX?ofertaDisciplinaId=XXXXXXX",
"atividades": [
{
"nome_atividade": "Relatório de Aula Prática - Web Analytics",
"tipo_atividade": "Portfólio",
"periodo": "03/02/25 - 17/05/25"
},
{
"nome_atividade": "Av1 - Web Analytics",
"tipo_atividade": "Avaliação Virtual",
"periodo": "14/04/25 - 26/05/25"
},
{
"nome_atividade": "Av2 - Web Analytics",
"tipo_atividade": "Avaliação Virtual",
"periodo": "14/04/25 - 02/06/25"
},
{
"nome_atividade": "Av - Subst. 1 - Web Analytics",
"tipo_atividade": "Avaliação Virtual",
"periodo": "03/06/25 - 07/06/25"
},
{
"nome_atividade": "Av - Subst. 2 - Web Analytics",
"tipo_atividade": "Avaliação Virtual",
"periodo": "03/06/25 - 07/06/25"
},
{
"nome_atividade": "Prova Presencial - 1º Chamada - Web Analytics",
"tipo_atividade": "Prova Presencial da Disciplina",
"periodo": "24/05/25 - 31/05/25"
},
{
"nome_atividade": "Prova Presencial - 2º Chamada - Web Analytics",
"tipo_atividade": "Prova Presencial da Disciplina",
"periodo": "09/06/25 - 14/06/25"
},
{
"nome_atividade": "Prova Presencial - Recuperação - Web Analytics",
"tipo_atividade": "Prova Presencial da Disciplina",
"periodo": "16/06/25 - 21/06/25"
}
]
}GitHub: pagueru
LinkedIn: Raphael Coelho
E-mail: raphael.phael@gmail.com

