Sopa Linda - Instalação
Como BeautifulSoup não é uma biblioteca python padrão, precisamos instalá-la primeiro. Vamos instalar a biblioteca BeautifulSoup 4 (também conhecida como BS4), que é a mais recente.
Para isolar nosso ambiente de trabalho para não atrapalhar a configuração existente, vamos primeiro criar um ambiente virtual.
Criação de um ambiente virtual (opcional)
Um ambiente virtual nos permite criar uma cópia de trabalho isolada do python para um projeto específico sem afetar a configuração externa.
A melhor maneira de instalar qualquer máquina de pacote python é usando pip, no entanto, se o pip ainda não estiver instalado (você pode verificar usando - “pip –version” no seu prompt de comando ou shell), você pode instalar dando o comando abaixo -
Ambiente Linux
$sudo apt-get install python-pip
Ambiente Windows
Para instalar o pip no Windows, faça o seguinte -
Baixe o get-pip.py em https://bootstrap.pypa.io/get-pip.py ou do github para o seu computador.
Abra o prompt de comando e navegue até a pasta que contém o arquivo get-pip.py.
Execute o seguinte comando -
>python get-pip.py
É isso aí, o pip agora está instalado em sua máquina Windows.
Você pode verificar seu pip instalado executando o comando abaixo -
>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)
Instalando ambiente virtual
Execute o comando abaixo em seu prompt de comando -
>pip install virtualenv
Após a execução, você verá a imagem abaixo -
O comando abaixo criará um ambiente virtual (“myEnv”) em seu diretório atual -
>virtualenv myEnv
Captura de tela
Para ativar seu ambiente virtual, execute o seguinte comando -
>myEnv\Scripts\activate
Na imagem acima, você pode ver que temos “myEnv” como prefixo que nos diz que estamos no ambiente virtual “myEnv”.
Para sair do ambiente virtual, execute deactivate.
(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>
Como nosso ambiente virtual está pronto, vamos instalar o beautifulsoup.
Instalando BeautifulSoup
Como BeautifulSoup não é uma biblioteca padrão, precisamos instalá-la. Vamos usar o pacote BeautifulSoup 4 (conhecido como bs4).
Máquina Linux
Para instalar o bs4 no Debian ou Ubuntu Linux usando o gerenciador de pacotes do sistema, execute o comando abaixo -
$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)
Você pode instalar o bs4 usando easy_install ou pip (no caso de você encontrar problemas na instalação usando o gerenciador de sistema).
$easy_install beautifulsoup4
$pip install beautifulsoup4
(Pode ser necessário usar easy_install3 ou pip3 respectivamente se estiver usando python3)
Máquina Windows
Instalar o beautifulsoup4 no windows é muito simples, principalmente se você já tem o pip instalado.
>pip install beautifulsoup4
Então agora o beautifulsoup4 está instalado em nossa máquina. Vamos falar sobre alguns problemas encontrados após a instalação.
Problemas após a instalação
Em máquinas com Windows, você pode encontrar um erro de versão incorreta sendo instalada principalmente por meio de -
erro: ImportError “No module named HTMLParser”, então você deve executar a versão python 2 do código em Python 3.
erro: ImportError “No module named html.parser” erro, então você deve estar executando a versão Python 3 do código em Python 2.
A melhor maneira de escapar das duas situações acima é reinstalar o BeautifulSoup novamente, removendo completamente a instalação existente.
Se você conseguir o SyntaxError “Invalid syntax” na linha ROOT_TAG_NAME = u '[document]', então você precisa converter o código python 2 para python 3, apenas instalando o pacote -
$ python3 setup.py install
ou executando manualmente o script de conversão 2 para 3 do python no diretório bs4 -
$ 2to3-3.2 -w bs4
Instalando um analisador
Por padrão, Beautiful Soup suporta o analisador HTML incluído na biblioteca padrão do Python, no entanto, também oferece suporte a muitos analisadores python externos de terceiros, como analisador lxml ou analisador html5lib.
Para instalar o analisador lxml ou html5lib, use o comando -
Máquina Linux
$apt-get install python-lxml
$apt-get insall python-html5lib
Máquina Windows
$pip install lxml
$pip install html5lib
Geralmente, os usuários usam lxml para velocidade e é recomendado usar lxml ou analisador html5lib se você estiver usando uma versão mais antiga do python 2 (antes da versão 2.7.3) ou python 3 (antes da versão 3.2.2), pois o analisador HTML integrado do python é não é muito bom em lidar com versões anteriores.
Preparando uma bela sopa
É hora de testar nosso pacote Beautiful Soup em uma das páginas html (levando a página da web - https://www.tutorialspoint.com/index.htm, você pode escolher qualquer outra página da web que desejar) e extrair algumas informações dela.
No código abaixo, estamos tentando extrair o título da página da web -
from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)
Resultado
<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>
Uma tarefa comum é extrair todos os URLs de uma página da web. Para isso, só precisamos adicionar a linha de código abaixo -
for link in soup.find_all('a'):
print(link.get('href'))
Resultado
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm
Da mesma forma, podemos extrair informações úteis usando beautifulsoup4.
Agora vamos entender mais sobre “sopa” no exemplo acima.