Skip to content

pagueru/py-selenium-scraper

Repository files navigation

py-selenium-scraper

Automatização de acesso à plataforma Colaborar da Anhanguera para exportar datas de atividades em formato iCalendar (ICS) usando Selenium.

Overview

Python uv Ruff Selenium Anhanguera Colaborar


Sobre o Projeto

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.

Principais aprendizados

  • 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.

Requisitos

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.

Configuração do Projeto

Para começar, clone o repositório do projeto:

git clone https://github.com/pagueru/py-selenium-scraper
cd py-selenium-scraper

Instalação

Instalação recomendada (usando uv):

uv sync --all-extras

Alternativamente, você pode instalar as dependências via requirements.txt:

pip install -r requirements.txt

Personalizando o Arquivo de Configuração

Renomeie 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
]

Execução do Pipeline

uv run main.py

Nota: 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.

Poetry Run

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 PRODID foi quebrado para melhor visualização.

Exemplos de Retornos

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=XXXXXXX
Formato 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"
            }
        ]
    }

Contato

GitHub: pagueru

LinkedIn: Raphael Coelho

E-mail: raphael.phael@gmail.com

About

Automatização de acesso à plataforma Colaborar da Anhanguera para exportar datas de atividades em formato iCalendar (ICS) usando Selenium.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages