BeautifulSoup
O que é?
BeautifulSoup é uma ferramente que permite extrair dados de arquivos HTML e XML.
Como ela irá funcionar?
Para usá-la, será necessário "baixar" a página web (o código dela) e ai sim, ela poderá ser acessada através da BeautifulSoup para efetuar as devidas extrações.
A biblioteca é excelente para extrações rápidas de dados, visto que não precisa abrir navegador e interagir com o mesmo para conseguir coletar informações.
Baixando a página HTML
Biblioteca Embarcada - urllib
-
Importar biblioteca para "baixar" o HTML da página:
-
Efetuar requisição da página HTML:
-
Resolvendo problema de certificado SSL (se houver):
- Outras formas de resolver o erro de certificado SSL: https://exerror.com/urlopen-error-ssl-certificate_verify_failed-certificate-verify-failed/
-
Biblioteca Externa - requests
-
Instalação da "lib" usando o gerenciador de pacotes "pip":
-
Importação da “lib”:
-
Download da página HTML:
Efetuando "parse" no HTML
Instalação do “parser” do HTML utilizando o gerenciador de pacotes "pip"
Importação do “parser” de HTML
Formatar o código de HTML para “parsear”
# Formato para quem usou urllib
soup = BeautifulSoup(html.read(), 'html.parser')
# Formato para quem usou requests
soup = BeautifulSoup(html.text, 'html.parser')
Acessar uma TAG diretamente
Acessar o PRIMEIRO elemento através dos seus atributos básicos (ID ou CLASS)
soup.find(class_='text')
# output:
# <span class="text" itemprop="text">“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”</span>
Buscar algum elemento através do seu texto (entre TAGs)
Buscar mais de um elemento na página
soup.find_all(class_='text')
# ou
soup.find_all('span', {'class': 'text'})
# output: [<span class="text" itemprop="text">“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”</span>, <span class="text" itemprop="text">“It is our choices, Harry, that show what we truly are, far more than our abilities.”</span>, ... ]
Ver atributos da TAG de HTML
div = soup.find('div', {'class': 'quote'})
div.attrs
# output: {'class': ['quote'], 'itemscope': '', 'itemtype': 'http://schema.org/CreativeWork'}