dark proxyscrape logotipo

Web Scraping para iniciantes: Noções básicas e estrutura usando Python

Python, Scraping, Mar-01-20215 minutos de leitura

A Web scraping é a arte de extrair dados de um site em um formato automatizado e bem estruturado. Pode haver diferentes formatos para os dados do scraping , como Excel, CSV e muitos outros. Alguns casos de uso prático da Web scraping são pesquisa de mercado, monitoramento de preços, inteligência de preços, pesquisa de mercado e geração de leads. A Web scraping é uma técnica instrumental para fazer o melhor uso dos dados publicamente disponíveis e tomar decisões mais inteligentes. Portanto, é ótimo que todos conheçam pelo menos os conceitos básicos da Web scraping para se beneficiarem dela.

Este artigo abordará os conceitos básicos da Web scraping , brincando com a estrutura do Python chamada Beautiful Soup. Usaremos o Google Colab como nosso ambiente de codificação.

Etapas envolvidas no site Scraping usando Python

  1. Em primeiro lugar, precisamos identificar a página da Web que queremos acessar scrape e enviar uma solicitação HTTP para esse URL. Em resposta, o servidor retorna o conteúdo HTML da página da Web. Para essa tarefa, usaremos uma biblioteca HTTP de terceiros para lidar com solicitações python.
  2. Depois de conseguirmos acessar o conteúdo HTML, a principal tarefa é a análise dos dados. Não podemos processar os dados simplesmente por meio do processamento de strings, pois a maioria dos dados HTML está aninhada. É aí que o analisador entra em ação, criando uma estrutura de árvore aninhada dos dados HTML. Uma das bibliotecas de analisador de HTML mais avançadas é a html5lib.
  3. Em seguida, vem a passagem pela árvore, que envolve a navegação e a pesquisa na árvore de análise. Para essa finalidade, usaremos a Beautiful Soup (uma biblioteca Python de terceiros). Essa biblioteca Python é usada para extrair dados de arquivos HTML e XML.

Agora já vimos como funciona o processo da Web scraping . Vamos começar com a codificação,

Etapa 1: Instalação de bibliotecas de terceiros

Na maioria dos casos, o Colab vem com pacotes de terceiros já instalados. Mas, ainda assim, se as instruções de importação não estiverem funcionando, você pode resolver esse problema instalando alguns pacotes com os seguintes comandos, 

pip install requests
pip install html5lib
pip install bs4
Etapa 2: Acessar o conteúdo HTML da página da Web
solicitações de importação 
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
print(r.content)

Ele exibirá a saída do formulário,

Vamos tentar entender esse trecho de código,

  1. Na primeira linha de código, estamos importando a biblioteca de solicitações.
  2. Em seguida, estamos especificando o URL da página da Web que queremos scrape.
  3. Na terceira linha de código, enviamos a solicitação HTTP para o URL especificado e salvamos a resposta do servidor em um objeto chamado r.
  4. Por fim, print(r.content) retorna o conteúdo HTML bruto da página da Web.
Etapa 3: Analisar o conteúdo HTML
importar solicitações 
from bs4 import BeautifulSoup 
  
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
  
soup = BeautifulSoup(r.content, 'html5lib') # Se essa linha causar um erro, execute 'pip install html5lib' ou instale o html5lib 
print(soup.prettify())
Saída:

Ele fornece uma saída muito longa; algumas das capturas de tela estão anexadas abaixo.

Um dos melhores aspectos do Beautiful Soup é que ele foi desenvolvido com base nas bibliotecas de análise de HTML, como html5lib, html.parse, lxml etc., o que permite que o objeto do Beautiful Soap e a especificação da biblioteca de análise sejam criados simultaneamente. 

No código acima, criamos o objeto Beautiful Soup passando dois argumentos:

r.content: Conteúdo HTML bruto.
html5lib: Especifica o analisador de HTML que queremos usar.

Por fim, soup.prettify() é impresso, dando à árvore de análise uma representação visual do conteúdo HTML bruto.

Etapa 4: Pesquisar e navegar na árvore de análise

Agora é hora de extrair alguns dos dados úteis do conteúdo HTML. Os objetos soup contêm os dados na forma de estrutura aninhada, que podem ser extraídos de forma programática. No nosso caso, estamos acessando scraping uma página da Web que consiste em algumas citações. Portanto, criaremos um programa que resolve essas citações. O código é apresentado a seguir,

#Python program to scrape website  
#and save quotes from website 
import requests 
from bs4 import BeautifulSoup 
import csv 
   
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
   
soup = BeautifulSoup(r.content, 'html5lib') 
   
quotes=[]  # a list to store quotes 
   
table = soup.find('div', attrs = {'id':'all_quotes'})  
   
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Antes de prosseguir, é recomendável examinar o conteúdo HTML da página da Web, que imprimimos usando o método soup.prettify(), e tentar encontrar um padrão para navegar até as citações.

Agora explicarei como fazer isso no código acima, 

Se navegarmos pelas aspas, descobriremos que todas elas estão dentro de um contêiner div cujo id é "all_quotes". Portanto, encontraremos esse elemento div (denominado tabela no código) usando o método find():

table = soup.find('div', attrs = {'id':'all_quotes'})

O primeiro argumento dessa função é a tag HTML que precisa ser pesquisada. O segundo argumento é um elemento do tipo dicionário para especificar os atributos adicionais associados a essa tag. O método find() retorna o primeiro elemento correspondente. Você pode tentar table.prettify() para ter uma ideia melhor do que esse trecho de código faz.

Se nos concentrarmos no elemento table, o contêiner div conterá cada citação cuja classe seja quote. Portanto, faremos um loop em cada contêiner de div cuja classe seja quote.

Aqui, o método findAll() é muito útil, pois é semelhante ao método find() no que diz respeito aos argumentos, mas a principal diferença é que ele retorna uma lista de todos os elementos correspondentes. 

Estamos iterando em cada citação usando uma variável chamada linha.

Vamos analisar um exemplo de conteúdo de linha HTML para entender melhor:

Agora, considere o seguinte trecho de código:

for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)
Aqui estamos criando um dicionário para salvar todas as informações sobre uma cotação. A notação de ponto é usada para acessar a estrutura aninhada. Para acessar o texto dentro do elemento HTML, usamos .text:

Além disso, também podemos adicionar, remover, modificar e acessar os atributos da tag. Fizemos isso tratando a tag como um dicionário:

quote['url'] = row.a['href']
Em seguida, anexamos todas as citações à lista chamada citações. 

Por fim, geraremos um arquivo CSV, que será usado para salvar nossos dados.

nome do arquivo = 'inspirational_quotes.csv'

Nomeamos nosso arquivo como inspirational_qoutes.csv e salvamos nele todas as citações para serem usadas também no futuro. Aqui está a aparência do nosso arquivo inspirational_quotes.csv,

No resultado acima, mostramos apenas três linhas, mas, na realidade, há 33 linhas. Isso significa que extraímos uma quantidade considerável de dados da página da Web apenas com uma simples tentativa. 

Observação: Em alguns casos, a Web scraping é considerada ilegal, o que pode causar o bloqueio permanente de seu endereço IP pelo site. Portanto, você precisa ser cuidadoso e acessar scrape somente nos sites e páginas da Web que permitem isso. 

Por que usar o site Scraping?

Alguns dos cenários do mundo real em que a Web scraping poderia ser de grande utilidade são,

Geração de leads
Uma das atividades de vendas essenciais para a maioria das empresas é a geração de leads. De acordo com um relatório da Hubspot, a geração de tráfego e leads foi a prioridade número um de 61% dos profissionais de marketing de entrada. A Web scraping pode desempenhar um papel nesse processo, permitindo que os profissionais de marketing acessem as listas de leads estruturadas em toda a Internet.
Pesquisa de mercado 

Fazer a pesquisa de mercado correta é o elemento mais importante de todo negócio em andamento e, portanto, requer informações altamente precisas. A análise de mercado está sendo alimentada por um grande volume de dados, de alta qualidade e altamente perspicazes na Web scraping, que podem ser de diferentes tamanhos e formatos. Esses dados podem ser uma ferramenta muito útil para a realização de inteligência comercial. O foco principal da pesquisa de mercado está nos seguintes aspectos comerciais:

  • Ele pode ser usado para analisar tendências de mercado.
  • Ele pode nos ajudar a prever o preço do mercado.
  • Ele permite otimizar os pontos de entrada de acordo com as necessidades do cliente.
  • Ele pode ser muito útil para monitorar os concorrentes.
Criar listagens

A Web scraping pode ser uma técnica muito útil e proveitosa para criar as listagens de acordo com os tipos de negócios, por exemplo, imóveis e lojas de comércio eletrônico. Uma ferramenta da Web scraping pode ajudar a empresa a pesquisar milhares de listagens de produtos da concorrência em sua loja e reunir todas as informações necessárias, como preços, detalhes do produto, variantes e avaliações. Isso pode ser feito em apenas algumas horas, o que pode ajudar ainda mais a criar suas próprias listagens, concentrando-se assim mais nas demandas dos clientes.

Comparar informações

A Web scraping ajuda várias empresas a coletar e comparar informações e fornecer esses dados de forma significativa. Vamos considerar os sites de comparação de preços que extraem avaliações, recursos e todos os detalhes essenciais de vários outros sites. Esses detalhes podem ser compilados e adaptados para facilitar o acesso. Assim, uma lista pode ser gerada a partir de diferentes varejistas quando o comprador pesquisa um determinado produto. Portanto, a Web scraping facilitará muito o processo de tomada de decisão para o consumidor, mostrando várias análises de produtos de acordo com a demanda do consumidor.

Informações agregadas

O site scraping pode ajudar a agregar as informações e exibi-las de forma organizada para o usuário. Vamos considerar o caso dos agregadores de notícias. A Web scraping será usada das seguintes maneiras,

  1. Usando o site scraping, é possível coletar os artigos mais precisos e relevantes.
  2. Ele pode ajudar a coletar links para vídeos e artigos úteis.
  3. Crie cronogramas de acordo com as notícias.
  4. Capturar tendências de acordo com os leitores das notícias.

Portanto, neste artigo, fizemos uma análise detalhada de como a Web scraping funciona, considerando um caso de uso prático. Também fizemos um exercício muito simples sobre a criação de um simples raspador da Web em Python. Agora você pode scrape qualquer outro site de sua escolha. Além disso, também vimos alguns cenários do mundo real nos quais a Web scraping pode desempenhar um papel importante. Esperamos que você tenha gostado do artigo e que tudo tenha sido claro, interessante e compreensível.  

Se estiver procurando por serviços incríveis de proxy para seus projetos de scraping web, não se esqueça de dar uma olhada em ProxyScrape residencial e premium proxies.