Pular para o conteúdo

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:

  1. 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.
  2. Selenium WebDriver – é um módulo Python utilizado para testes automatizados de navegadores (outras linguagens, como JavaScript, também possuem bibliotecas com esta ferramenta).
  3. 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.