Skip to content

Instantly share code, notes, and snippets.

@nelisjunior
Last active July 7, 2025 21:21
Show Gist options
  • Select an option

  • Save nelisjunior/46d40e0e745d11e3e0ea62b5b4fadaac to your computer and use it in GitHub Desktop.

Select an option

Save nelisjunior/46d40e0e745d11e3e0ea62b5b4fadaac to your computer and use it in GitHub Desktop.
LISTAGEM_PROFESSORES_ECT
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/nelisjunior/46d40e0e745d11e3e0ea62b5b4fadaac/ufrn_ect_listagem_professores.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# LISTAGEM DOCENTES DA ECT UFRN\n",
"\n",
"Ao executar o código, o resultado impresso será a lista COMPLETA e ATUALIZADA de acordo com o encontrado no próprio SIGAA.\n",
"\n",
"Ao executar o código basta selecionar todo o conteúdo aqui, copiar e depois colar dentro do formulário na seção com os nomes dos docentes."
],
"metadata": {
"id": "RVr3ellt2igH"
}
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "lIYdn1woOS1n",
"collapsed": true,
"outputId": "eefea0ce-24c6-4aa0-d2d2-3d872b6ccbad",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (2.32.3)\n",
"Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.11/dist-packages (4.13.4)\n",
"Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests) (3.4.2)\n",
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests) (3.10)\n",
"Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests) (2.4.0)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests) (2025.6.15)\n",
"Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4) (2.7)\n",
"Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.11/dist-packages (from beautifulsoup4) (4.14.0)\n"
]
}
],
"source": [
"!pip install requests beautifulsoup4"
]
},
{
"cell_type": "code",
"source": [
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import re\n",
"import pandas as pd # Para criar e exibir a tabela\n",
"\n",
"# URL da página\n",
"url = \"https://sigaa.ufrn.br/sigaa/public/departamento/professores.jsf?id=4885\"\n",
"\n",
"# Fazendo a requisição para a página\n",
"response = requests.get(url)\n",
"\n",
"# Verificando se a requisição foi bem-sucedida\n",
"if response.status_code == 200:\n",
" # Parseando o conteúdo HTML com BeautifulSoup\n",
" soup = BeautifulSoup(response.text, 'html.parser')\n",
"\n",
" # Encontrando todos os elementos que contêm os nomes dos docentes\n",
" nomes = soup.find_all('span', class_='nome') # Atualize a classe se necessário\n",
"\n",
" # Lista para armazenar os dados em formato de matriz [nome, formacao]\n",
" dados = []\n",
"\n",
" # Iterando sobre os elementos encontrados\n",
" for nome in nomes:\n",
" # Limpando o texto removendo espaços, quebras de linha e caracteres indesejados\n",
" texto_limpo = re.sub(r'[\\t\\n\\r]+', ' ', nome.get_text(strip=True))\n",
" texto_limpo = re.sub(r'[()]', '', texto_limpo) # Remover parênteses\n",
"\n",
" # Verificando e separando a formação (DOUTOR, MESTRE) do nome\n",
" formacao = None\n",
" if 'DOUTOR' in texto_limpo:\n",
" formacao = 'DOUTOR'\n",
" texto_limpo = texto_limpo.replace('DOUTOR', '').strip()\n",
" elif 'MESTRE' in texto_limpo:\n",
" formacao = 'MESTRE'\n",
" texto_limpo = texto_limpo.replace('MESTRE', '').strip()\n",
"\n",
" # Adicionando o nome e a formação na lista de dados\n",
" dados.append([texto_limpo, formacao])\n",
"\n",
" # Criando a tabela com pandas\n",
" df = pd.DataFrame(dados, columns=['Nome', 'Formação'])\n",
"\n",
" # Imprimindo apenas a coluna 'Nome'\n",
" print(df['Nome'].to_string(index=False))\n",
"\n",
"else:\n",
" print(f\"Erro ao acessar a página: {response.status_code}\")\n"
],
"metadata": {
"id": "zk0HZeRVso0c",
"outputId": "1fd1f192-f197-41d2-b682-dae5a578d1f7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" ADA LIMA FERREIRA DE SOUSA\n",
" ALANA DRIZIÊ GONZATTI DOS SANTOS\n",
" ALEXANDRE MAGNUS FERNANDES GUIMARAES\n",
" ALEXSANDRO PEREIRA LIMA\n",
" AMANDA MELISSA DAMIAO LEITE\n",
" ANDRE BESSA MOREIRA\n",
" ANDREZZA CRISTINA DA SILVA BARROS SOUZA\n",
" AQUILES MEDEIROS FILGUEIRA BURLAMAQUI\n",
" BRUNO MARQUES FERREIRA DA SILVA\n",
" CAMILA PACELLY BRANDÃO DE ARAÚJO\n",
" CARLA GIOVANA CABRAL\n",
" CARLOS ALEXANDRE CAMARGO DE ABREU\n",
" CARLOS EDUARDO PELLICER DE OLIVEIRA\n",
" DARLAN ARAUJO MOREIRA\n",
" DEBORA MACHADO DE OLIVEIRA MEDINA\n",
" DEUSDEDIT MONTEIRO MEDEIROS\n",
" DIEGO RODRIGO CABRAL SILVA\n",
" DOUGLAS DO NASCIMENTO SILVA\n",
" EDNA MARIA RANGEL DE SA\n",
"EDUARDO JOSE SANDE E OLIVEIRA DOS SANTOS SOUZA\n",
" EFRAIN PANTALEON MATAMOROS\n",
" ELISAMA VIEIRA DOS SANTOS\n",
" ELTON JOSE FIGUEIREDO DE CARVALHO\n",
" EMANUELE ORAZI\n",
" EVERTON SANTI\n",
" FABIANA TRISTAO DE SANTANA\n",
" FABIO JOSE PINHEIRO SOUSA\n",
" FABIO SPEROTTO BEMFICA\n",
" FELIPE MACEDO ZUMBA\n",
" FILIPE MARTEL DE MAGALHAES BORGES\n",
" FLAVIO BEZERRA COSTA\n",
" FRANCISCO EDSON DA SILVA\n",
" FRANCISCO JOSÉ TARGINO VIDAL\n",
" GLAUCIO BEZERRA BRANDAO\n",
" GLICIA MARILI AZEVEDO DE MEDEIROS\n",
" GUSTAVO ZAMPIER DOS SANTOS LIMA\n",
" HECTOR LENY CARRION SALAZAR\n",
" HELTON MAIA PEIXOTO\n",
" HERCULANA TORRES DOS SANTOS\n",
" IDALMIS MILIAN SARDINA MARTINS\n",
" IGOR ROSBERG DE MEDEIROS SILVA\n",
" JAZIELLI CARVALHO SA\n",
" JEFFERSON SOARES DA COSTA\n",
" JOAO RODRIGO SOUZA LEAO\n",
" JOAO VITAL DA CUNHA JUNIOR\n",
" JOILSON BATISTA DE ALMEIDA REGO\n",
" JORGE CARLOS LOPES BRAS SILVA PEREIRA\n",
" JOSE HENRIQUE FERNANDEZ\n",
" JOSE JOSEMAR DE OLIVEIRA JUNIOR\n",
" JOSSANA MARIA DE SOUZA FERREIRA\n",
" KALINE MELO DE SOUTO VIANA\n",
" KELLEN CARLA LIMA\n",
" KELLY KALIANE REGO DA PAZ RODRIGUES\n",
" LAURO WANDERLEY MELLER\n",
" LEANDRO IBIAPINA BEVILAQUA\n",
" LEO GOUVEA MEDEIROS\n",
" LEONARDO ANDRADE DE ALMEIDA\n",
" LEONARDO HENRIQUE BORGES DE OLIVEIRA\n",
" LEONARDO MAFRA BEZERRIL\n",
" LORENA RAMOS CORREIA CARDOSO\n",
" LUCIANA DE FIGUEIREDO LOPES LUCENA\n",
" LUCIO MARASSI DE SOUZA ALMEIDA\n",
" LUIZ EDUARDO CUNHA LEITE\n",
" MARCELA APARECIDA CUCCI SILVESTRE\n",
" MARCELO BORGES NOGUEIRA\n",
" MARCELO KIYOSHI KIAN NAKAEMA\n",
" MARCELO PRATA VIDAL\n",
" MARCONI CAMARA RODRIGUES\n",
" MAXWELL SANTANA LIBÓRIO\n",
" NEEMIAS ALVES DE LIMA\n",
" ORIVALDO VIEIRA DE SANTANA JUNIOR\n",
" PATRICIA KAORI SOARES\n",
" PAULA STEIN\n",
" PAULO DANTAS SESION JUNIOR\n",
" PEDRO DA CUNHA FERREIRA\n",
" RAFAEL CHAVES SOUTO ARAUJO\n",
" RAQUEL MENEZES BEZERRA SAMPAIO\n",
" REX ANTONIO DA COSTA MEDEIROS\n",
" RICARDO WAGNER DE ARAUJO\n",
" RODRIGO BARROS\n",
" RONAI MACHADO LISBOA\n",
" RONALDO CARLOTTO BATISTA\n",
" RUMMENIGGE RUDSON DANTAS\n",
" SALETE MARTINS ALVES\n",
" SEBASTIAO LUIZ DE OLIVEIRA\n",
" SERGIO QUEIROZ DE MEDEIROS\n",
" SERGIO RODRIGUEZ PEREZ\n",
" SIMONE BATISTA\n",
" TARCIRO NORTARSON CHAVES MENDES\n",
" TATIANA DE CAMPOS BICUDO\n",
" THIAGO ISAIAS NOBREGA DE LUCENA\n",
" VERA LUCIA LOPES DE CASTRO\n",
" ZULMARA VIRGINIA DE CARVALHO\n",
" MARY LUCIA DA SILVA NOGUEIRA\n",
" ALLAN ROBSON SILVA VENCESLAU\n",
" ANA TÁZIA PATRÍCIO DE MELO CARDOSO\n",
" ARTHUR GABRIEL BEZERRA DE AZEVEDO\n",
" JADSON LUCAS GOMES SOUZA\n",
" JESAIAS CARVALHO PEREIRA SILVA\n",
" MARCOS VICTOR PIRES RODRIGUES\n",
" MARIANA LIMA DE OLIVEIRA\n",
" MATHEUS SILVA DE SOUZA\n",
" PATRICIA RILLIANE GOMES DA SILVA\n",
" RAUL FELIPE APPIS\n",
" SEBASTIAO GOMES DE ANDRADE NETO\n",
" CAROLINA FONSECA MINNICELLI\n",
" JOAO MODESTO DE MEDEIROS JUNIOR\n",
" MARIA JOSE SANTOS LIMA\n"
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "0gEGZnvYuVqQ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
" # Perguntando ao usuário se deseja salvar os nomes em um arquivo .txt\n",
" salvar = input(\"Deseja salvar os nomes em um arquivo .txt? (s/n): \").strip().lower()\n",
"\n",
" if salvar == 's':\n",
" # Salvando a coluna 'Nome' em um arquivo .txt\n",
" with open(\"nomes_docentes.txt\", \"w\", encoding=\"utf-8\") as f:\n",
" for nome in df['Nome']:\n",
" f.write(nome + \"\\n\") # Escreve cada nome em uma nova linha\n",
" print(\"Arquivo 'nomes_docentes.txt' salvo com sucesso!\")"
],
"metadata": {
"id": "0ivl7IPu-nu_",
"outputId": "44da7451-f00a-4d76-f6c2-1b0bbecdffba",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 356
}
},
"execution_count": 5,
"outputs": [
{
"output_type": "error",
"ename": "KeyboardInterrupt",
"evalue": "Interrupted by user",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipython-input-5-1314974756.py\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Perguntando ao usuário se deseja salvar os nomes em um arquivo .txt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0msalvar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Deseja salvar os nomes em um arquivo .txt? (s/n): \"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msalvar\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m's'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# Salvando a coluna 'Nome' em um arquivo .txt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/ipykernel/kernelbase.py\u001b[0m in \u001b[0;36mraw_input\u001b[0;34m(self, prompt)\u001b[0m\n\u001b[1;32m 1175\u001b[0m \u001b[0;34m\"raw_input was called, but this frontend does not support input requests.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1176\u001b[0m )\n\u001b[0;32m-> 1177\u001b[0;31m return self._input_request(\n\u001b[0m\u001b[1;32m 1178\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprompt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1179\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_parent_ident\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"shell\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/ipykernel/kernelbase.py\u001b[0m in \u001b[0;36m_input_request\u001b[0;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[1;32m 1217\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1218\u001b[0m \u001b[0;31m# re-raise KeyboardInterrupt, to truncate traceback\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1219\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Interrupted by user\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1220\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1221\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Invalid Message:\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: Interrupted by user"
]
}
]
}
],
"metadata": {
"colab": {
"name": "LISTAGEM_PROFESSORES_ECT",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment