Skip to content

Instantly share code, notes, and snippets.

@nelisjunior
Last active March 13, 2025 13:17
Show Gist options
  • Save nelisjunior/46d40e0e745d11e3e0ea62b5b4fadaac to your computer and use it in GitHub Desktop.
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": null,
"metadata": {
"id": "lIYdn1woOS1n",
"collapsed": true
},
"outputs": [],
"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"
},
"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_"
},
"execution_count": null,
"outputs": []
}
],
"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