-
Introdução à Biblioteca Beautiful Soup
- Propósito: Extrair informações de páginas da web
- Exemplo: Coletando dados do site do Mercado Livre
-
Definindo Valores para Extrair
-
Configurando o Código
- Importar bibliotecas necessárias: Beautiful Soup, pandas, requests, regex
import re import requests import bs4 import pandas as pd
- Fazer uma requisição para obter o conteúdo do site
response = requests.get(host).content
-
Extraindo Informações
- Recuperar informações de título para testar a funcionalidade
- Usar métodos como
find_all
para localizar elementos específicos com base em valores de classe
container_items = soup.find_all("div", class_="ui-search-result__content-wrapper")
-
Processamento de Dados
- Definir funções para processar e retornar os dados extraídos
- Utilizar regex para extrair informações de preço e avaliação
def add_product(texto): # Expressões regulares para extrair o título, preço e avaliação regex_preco = r'R\$(\d+\.?\d*)' # Encontrar correspondências usando regex titulo = texto.split('por ')[0] preco = re.search(regex_preco, texto).group(1) try: avaliacao = re.search(r'\((\d+)\)', texto).group(1) avaliacao = avaliacao.replace('(', '').replace(')', '') except: avaliacao = 0 return { 'title': titulo, 'price': float(preco), 'assessment': int(avaliacao) }
-
Criando um DataFrame
- Armazenar os dados extraídos em uma lista para conversão em DataFrame
for item in container_items: data.append(add_product(item.text))
- Converter a lista em um DataFrame para facilitar a manipulação de dados
df = pd.DataFrame(data)
-
Filtrar os dados
- Realizar filtragem de dados (por exemplo, filtrar avaliações diferentes de zero)
df = df.query('assessment >= 1000') df = df.query('price >= 1.000')
- Conduzir análises adicionais ou métricas sobre os dados extraídos
import matplotlib.pyplot as plt df = df.sort_values(by='price', ascending=False) # Criando o gráfico de barras plt.figure(figsize=(12, 6)) plt.barh(df['title'], df['price'], color='skyblue') plt.xlabel('Preço (R$)') plt.ylabel('Produto') plt.title('Preços das Geladeiras') plt.gca().invert_yaxis() # Inverter a ordem dos itens para o mais caro aparecer primeiro plt.show()
-
Conclusão
- Apresentar o DataFrame gerado
- Demonstrar capacidades de filtragem e análise de dados
- Destacar o potencial para análises ou métricas adicionais utilizando os dados extraídos
pedrowill-dev / bs4-crawler-mercadolivre Goto Github PK
View Code? Open in Web Editor NEWEste repositório se concentra na análise de dados obtidos de uma única página do Mercado Livre. Com ênfase na extração eficiente e na análise de dados, oferece um exemplo prático e instruções detalhadas. Os dados extraídos são processados para identificar padrões e tendências.
License: MIT License