Web Scraping
Introdução
A raspagem de dados Web permite a extração automatizada de dados de sites para posterior análise. É uma ferramenta poderosa na tomada de decisões empresariais e na pesquisa do comportamento dos usuários nas redes sociais. Infelizmente, esta ferramenta também é usada por criminosos na preparação de ataques cibernéticos.
São módulos Python usados na raspagem de dados:
- Webbrowser
- Requests
- Beautifulsoup
- Selenium
Webbrowser
Esse módulo inclui funções para abrir URLs e registrar navegadores.
Para usar o Webbrowser na linha de comandos e abrir a página oficial do Python no navegador padrão do usuário:
python -m webbrowser -t "https://www.python.org"
O mesmo resultado pode ser obtido com o programa Python abaixo.
import webbrowser webbrowser.open('https://www.python.org')
Veja mais detalhes sobre Webbrowser em https://docs.python.org/3/library/webbrowser.html.
Requests
Esse módulo permite enviar solicitações HTTP: o script envia alguns dados para uma URL e, em seguida, o servidor retorna uma resposta. Por exemplo, o programa mostrado abaixo apenas verifica se o site oficial do Python está acessível.
import requests resp = requests.get('https://www.python.org') if resp: print('Resposta OK') else: print('Resposta ERRO') print("Codigo de retorno = " + str(resp.status_code))
Uma possível resposta é
Resposta OK Codigo de retorno = 200
Para mais detalhes sobre o Requests, veja https://docs.python-requests.org/en/latest/.
BeautifulSoup
Esse módulo permite extrair dados de arquivos HTML e de arquivos XML. O usuário pode definir o analisador que será usado para montar a estrutura a ser usada na busca dos elementos HTML/XML (por exemplo, “html.parser”).
O programa, mostrado a seguir, usa Requests para obter a página oficial do Python e, em seguida, usa BeautifulSoup para extrair o título da página. Note que o título é apresentado de duas formas: com a tag completa do HTML e com apenas o conteúdo do título.
import requests, bs4 res = requests.get('https://www.python.org') pagina = bs4.BeautifulSoup(res.text, "html.parser") titulo = pagina.select('title') print("\nTITULO: " + str(titulo)) print("Conteudo do titulo :" + titulo[0].getText())
A resposta é
TITULO: [<title>Welcome to Python.org</title>] Conteudo do titulo : Welcome to Python.org
Mais detalhes sobre o BeautifulSoup podem ser encontrados em https://beautiful-soup-4.readthedocs.io/en/latest/.
Selenium
Selenium é um conjunto de ferramentas que permite automatizar ações em aplicativos Web. Atualmente, as três principais ferramentas são:
- Selenium IDE – é um plugin Firefox ou Chrome usado para gravar as açãos executadas pelo usuário no navegador e depois repetí-las sem a necessidade de interação com o usuário.
- Selenium WebDriver – é um módulo Python utilizado para testes automatizados de navegadores (outras linguagens, como JavaScript, também possuem bibliotecas com esta ferramenta).
- Selenium Grid – é um servidor proxy que executa testes paralelos em diferentes máquinas (físicas e virtuais) e em diferentes navegadores.
O exemplo abaixo mostra um programa Python que usa Selenium WebDriver: o navegador Firefox é aberto com a página oficial do Python.
from selenium import webdriver firefox = webdriver.Firefox() firefox.get('https://www.python.org')
Veja https://selenium-python.readthedocs.io para mais detalhes sobre o Selenium.