Select Page

Introdução

A Internet nos fornece mais dados do que qualquer um de nós pode ler e entender, assim, muita vezes queremos trabalhar com essas informações programaticamente a fim de dar sentido a isso. Às vezes, esse dado nos é fornecido pelo criador do site by means of arquivos .csv ou valores separados por vírgula, ou através de uma API (Interface de Programação da Aplicação). Outras vezes, precisamos coletar texto da própria internet.

Este instructional irá mostrar como trabalhar com os pacotes Python Requests e Beautiful Soup de forma a poder utilizar dados das páginas internet. O módulo Requests lhe permite integrar seus programas Python com internet services and products, enquanto o módulo Gorgeous Soup é projetado para fazer com que a captura de tela ou screen-scraping seja feita rapidamente. Utilizando o console interativo do Python e essas duas bibliotecas, vamos ver como coletar uma página internet e trabalhar com as informações textuais disponíveis lá.

Pré-requisitos

Para completar este instructional, você vai precisar de um ambiente de desenvolvimento Python 3. Você pode seguir o guia apropriado para o seu sistema operacional disponível na série How To Install and Set Up a Local Programming Environment for Python 3 ou How To Install Python 3 and Set Up a Programming Environment on an Ubuntu 16.04 Server para configurar tudo o que você precisar.

Adicionalmente, você deverá estar familiarizado com:

Com o seu ambiente de desenvolvimento configurado e esses conceitos de programação Python em mente, vamos começar a trabalhar com Requests e Gorgeous Soup.

Instalando o Requests

Vamos começar ativando nosso ambiente de programação Python. Certifique-se de que você está no diretório onde o seu ambiente de desenvolvimento está localizado, e execute o seguinte comando.

Para trabalhar com páginas internet, vamos precisar solicitar a página. A biblioteca Requests lhe permite fazer uso de HTTP dentro de Programas Python em um formato legível.

Com o seu ambiente de programação ativado, vamos instalar o Requests com o pip:

Enquanto a biblioteca Requests estiver sendo instalada, você receberá a seguinte saída:

Output

Amassing requests Downloading requests-2.18.1-py2.py3-none-any.whl (88kB) 100% |████████████████████████████████| 92kB 3.1MB/s ... Putting in accrued programs: chardet, urllib3, certifi, idna, requests Effectively put in certifi-2017.4.17 chardet-3.0.Four idna-2.Five requests-2.18.1 urllib3-1.21.1

Se o Requests foi instalado anteriormente, você receberia um comments identical ao seguinte em sua janela de terminal:

Output

Requirement already glad ...

Com o Requests instalado em seu ambiente de programação, podemos seguir e instalar o próximo módulo.

Instalando o Gorgeous Soup

Assim como fizemos com o Requests, vamos instalar o Gorgeous Soup com o pip. A versão atual do Gorgeous Soup Four pode ser instalada com o seguinte comando:

  • pip set up beautifulsoup4

Depois de executar este comando, você deverá ver uma saída parecida com a seguinte:

Output

Amassing beautifulsoup4 Downloading beautifulsoup4-4.6.0-py3-none-any.whl (86kB) 100% |████████████████████████████████| 92kB 4.4MB/s Putting in accrued programs: beautifulsoup4 Effectively put in beautifulsoup4-4.6.0

Agora que tanto o Gorgeous Soup quanto o Requests estão instalados, podemos passar a entender como trabalhar com as bibliotecas para fazer scraping em web sites.

Com as duas bibliotecas Python que usaremos agora instaladas, podemos nos familiarizar com a varredura de uma página internet básica.

Vamos primeiro entrar no Console Interativo do Python:

A partir daqui, vamos importar o módulo Requests de forma que possamos coletar uma página internet de exemplo:

Vamos atribuir a URL (abaixo) da página internet de exemplo, mockturtle.html à variável url:

  • url = 'https://belongings.digitalocean.com/articles/eng_python/beautiful-soup/mockturtle.html'

Em seguida, podemos atribuir o resultado de uma solicitação dessa página à variável web page com o método request.get(). Passamos a URL da página (que atribuímos à variável url) para esse método.

A variável web page é atribuída a um objeto Reaction:

>>> web page

>>>

O objeto Reaction acima nos informa a propriedade status_code entre colchetes (nesse caso 200). Este atributo pode ser chamado explicitamente:

>>> web page.status_code
200
>>> 

O código de retorno 200 nos diz que a página foi baixada com sucesso. Códigos que começam com o número 2 geralmente indicam sucesso, enquanto códigos que começam com 4 ou 5 indicam que um erro ocorreu. Você pode ler mais sobre códigos de standing HTTP nas Definições de Códigos de Status do W3C.

Para trabalhar com dados da internet, vamos querer acessar o conteúdo baseado em texto dos arquivos internet. Podemos ler o conteúdo da resposta do servidor internet com web page.textual content (ou web page.content material se quisermos acessar a resposta em bytes).

Ao pressionar ENTER, vamos receber a seguinte saída:

Output

'n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">nnnn nn Turtle Soupnnnn

Turtle Soup

nn

Gorgeous Soup, so wealthy and inexperienced,
n Ready in a scorching tureen!
n Who for such dainties would now not droop?
n Soup of the night, exquisite Soup!
n Soup of the night, exquisite Soup!

nn

Beau--ootiful Soo--oop!
n Beau--ootiful Soo--oop!
n Soo--oop of the e--e--evening,
n Gorgeous, exquisite Soup!

nn

Gorgeous Soup! Who cares for fish,
n Sport or every other dish?
n Who would now not give all else for 2
n Pennyworth handiest of Gorgeous Soup?
n Pennyworth handiest of gorgeous Soup?

nn

Beau--ootiful Soo--oop!
n Beau--ootiful Soo--oop!
n Soo--oop of the e--e--evening,
n Gorgeous, beauti--FUL SOUP!

nnn' >>>

Aqui vemos que o texto completo da p