Buscando dados na internet

4.2 Importando e executando funções

Para extrair dados de forma autônoma, é preciso avançar um pouco mais nos conhecimentos de programação. Porém, você já é capaz de buscar informações se você baixar o arquivo dsd.py e salvá-lo no seu diretório de trabalho, o que permitirá que você utilize as funções contidas neste módulo.

Funções são conjuntos de instruções que são acionadas quando você insere, no seu programa, o comando de invocar (call) essa função. Você já tem usado funções nativas do Python (como append ou print), e no módulo 5 você aprenderá a criar novas funções, combinando os elementos que você está aprendendo: funções, iteradores e variáveis, etc.

Arquivos que contém várias funções, para serem utilizadas em outros programas, são chamados de "módulos". No módulo dsd.py, criamos algumas funções que você pode inserir nos seus programas para facilitar a execução das atividades de data mining. Por exemplo, esse módulo contém a função dsd.extrair(), sendo que o nome completo da função indica o módulo em que ela está contida (dsd) e o nome específico da função (extrair), separados por um ponto, e seguidos pelos parênteses.

A dsd.extrair() possibilita realizar de forma simplificada extração de um segmento de string, desde que você indique dentro dos parênteses os 3 parâmetros necessários para essa função: string a ser analisada, marcador de início e marcador de fim. O formato do comando que invoca essa função deve ser esse:

dsd.extrair (string, marcador_de_inicio, marcador_de_fim)

Como a dsd.extrair() não é nativa do Python, você precisa importá-la para o seu programa, por meio do comando "import dsd". Feito isso, você pode realizar o mesma extração que fizemos antes, usando a função extrair:

import dsd # necessário para importar a função dsd.extrair()

# definição da string
string = 'ADI 333, Relator: Marco Aurélio, Resultado: Procedente'

# comando usando a função e atribuindo o resultado a uma variável
texto_extraido = dsd.extrair(string, 'Relator: ', ',')

print (texto_extraido)

Aqui você pode perceber facilmente a diferença entre função (que é uma sequência abstrata de instruções) e um comando (que é uma definição concreta de instruções, que pode ser executada porque todos os parâmetros necessários estão definidos).

4.3 Função dsd.get()

Agora que você aprendeu a usar a função dsd.extrair, precisamos buscar informações para que você exercite essa habilidade com dados reais. Você aprenderá a criar programas que coletam dados no Data Mining Judicial e para isso precisará aprender melhor sobre requisições de dados. Por enquanto, vamos usar uma função simples, que operacionaliza a busca de dados no site do STF: a dsd.get().

Para usar essa função, é preciso importar o módulo dsd.py (o que você já aprendeu a fazer no ponto anterior) e usar a dsd.get() tendo como parâmetro o endereço relativo a um processo. Experimente rodar no seu console o seguinte código:

import dsd # importação do módulo dsd

dados = dsd.get('http://portal.stf.jus.br/peticaoInicial/verPeticaoInicial.asp?base=ADPF&documento=&s1=666&numProcesso=666')

print (dados)

Esse é um código que funciona e imprime na sua tela o conteúdo que o servidor do STF envia ao seu computador quando você consulta a ADPF 666 na página do controle concentrado (ADI, ADC, ADO e ADPF).

Ocorrem aqui duas dificuldades, que podem ser facilmente resolvidas:

  1. a linha 3 fica muito grande, forçando você a utilizar a barra inferior para ver todo o conteúdo. Para resolver o primeiro ponto, vamos reescrever o código, usando uma concatenação, que você já conhece. Com isso, todo o programa poderá aparecer na tela. Chamamos isso tipicamente de "wrap", uma quebra usada para tornar visível o texto em uma tela estreita.
  2. os dados impressos também são muito grandes, o que faz com que só o fim os dados relevantes apareça na sua tela. Para resolver isso, vamos trocar a função genérica dsd.get(), para a função dsd.getCC(), talhada especificamente para retornar a parte com dados relevantes da página de controle concentrado do STF. Para aprofundar: Se você abrir o módulo dsd.py, verá que a dsd.get_CC() é apenas uma combinação da dsd.get() com uma extrair() com marcadores de início e fim adequados para retornar os dados relevantes.

Fazendo esses ajustes, temos o seguinte código, que você pode copiar e rodar no seu console:

import dsd # importação do módulo dsd

dados = dsd.get_CC('http://portal.stf.jus.br/' +
                'peticaoInicial/verPeticaoInicial.asp' +
                '?base=ADPF&documento=&s1=666&numProcesso=666')

print (dados)

Quando construirmos nossos geradores de bancos de dados, você aprenderá a  'empilhar' essas listas, visto que uma 'pilha' de listas bem organizadas tem a mesma estrutura de uma tabela. Mas a geração dessas tabelas pode esperar um  pouco porque, antes disso, você precisa aprender mais algumas funções.