Biblioteca BeautifulSoup | Raspagem da Web com Python: Biblioteca BeautifulSoup

Conteúdo

Introdução:

datos no estructurados en un formato estructurado? Aquí es donde entra en escena el Web Scraping.

O que é Web Scraping?

En lenguaje sencillo, Raspado web, cosecha web, o extracción de datos web es un proceso automatizado de recopilación de datos grandes (não estruturado) de sitios web. El usuario puede extraer todos los datos en sitios particulares o los datos específicos según el requisito. Los datos recopilados se pueden almacenar en un formato estructurado para su posterior análisis.

Usos del web scraping:

No mundo real, el web scraping ha ganado mucha atención y tiene una amplia gama de usos. Alguns deles estão listados abaixo:

  1. Análisis del sentimiento de las redes sociales
  2. Generación de leads en el dominio de marketing
  3. Análise de mercado, comparación de precios en línea en el dominio de comercio electrónico
  4. Recopile datos de entrenamiento y prueba en aplicaciones de aprendizaje automático

Pasos involucrados en el web scraping:

  1. Busque la URL de la página web que desea raspar
  2. Seleccione los elementos particulares inspeccionando
  3. Escribe el código para obtener el contenido de los elementos seleccionados
  4. Almacene los datos en el formato requerido

¡¡Así de simples chicos .. !!

Las bibliotecas / herramientas populares que se utilizan para el web scraping son:

  • Selénio: un marco para probar aplicaciones web
  • BeautifulSoup: biblioteca de Python para obtener datos de HTML, XML y otros lenguajes de marcado
  • Pandas: biblioteca de Python para manipulación y análisis de datos

Neste artigo, crearemos nuestro propio conjunto de datos extrayendo reseñas de Domino’s Pizza del sitio web. consumeraffairs.com/food.

Nós vamos usar vamos cobri-los mais tarde neste artigo e Sopa linda por raspado y análisis os dados.

Paso 1: busque la URL de la página web que desea raspar

Abra la URLconsumeraffairs.com/food”Y busque Domino’s Pizza en la barra de búsqueda y presione Enter.

38562dominos20search-5631766

A continuación se muestra cómo se ve nuestra página de reseñas.

65516reviews20page-8763587

Paso 1.1: Definición de la URL base, parámetros de consulta

La URL base es la parte coherente de su dirección web y representa la ruta a la función de búsqueda del sitio web.

base_url = "https://www.consumeraffairs.com/food/dominos.html?page ="

Los parámetros de consulta representan valores adicionales que se pueden declarar en la página.

query_parameter = "?page ="+str(eu) # i represents the page number
44328url-5514232
URL = URL base + parámetro de consulta (imagem do autor)

Paso 2: seleccione los elementos particulares inspeccionando

A continuación se muestra una imagen de una revisión de muestra. Cada reseña tiene muchos elementos: la calificación otorgada por el usuario, o nome de usuário, la fecha de la reseña y el texto de la reseña junto con alguna información sobre cuántas personas le gustó.

23629review-3339191

Nuestro interés es extraer solo el texto de la reseña. Para isso, necesitamos inspeccionar la página y obtener las etiquetas HTML, los nombres de los atributos del elemento de destino.

Para inspeccionar una página web, haga clic con el botón derecho en la página, seleccione Inspeccionar o use el atajo de teclado Ctrl + Mudança + eu.

No nosso caso, el texto de revisión se almacena en la etiqueta HTML

del div con el nombre de clase “rvw-bd

33893capture-5499658
Inspeccionando los elementos objetivo

Com isto, nos familiarizamos con la página web. Saltemos rápidamente al raspado.

Paso 3: Escribe el código para obtener el contenido de los elementos seleccionados

Comience instalando los módulos / paquetes necesarios

pip install pandas requests BeautifulSoup4

Importar bibliotecas necessárias

import pandas as pd
import requests
from bs4 import BeautifulSoup as bs

pandas – para crear un marco de datos
solicitudes: para enviar solicitudes HTTP y acceder al contenido HTML desde la página web de destino
BeautifulSoup: es una biblioteca de Python para analizar datos HTML estructurados

Cree una lista vacía para almacenar todas las reseñas extraídas

all_pages_reviews = []

definir una función de raspador

def scraper():

Dentro de la función de raspador, escriba un para que el bucle recorra el número de páginas que le gustaría raspar. Me gustaría raspar las reseñas de cinco páginas.

para eu no alcance(1,6):

Creando una lista vacía para almacenar las reseñas de cada página (a partir de 1 uma 5)

pagewise_reviews = []

Construye la URL

url = base_url + query_parameter

Envíe la solicitud HTTP a la URL mediante solicitudes y almacene la respuesta

resposta = solicitações.get(url)

Cree un objeto de sopa y analice la página HTML

soup = bs(response.content, 'html.parser')

Encuentre todos los elementos div del nombre de claservw-bdy guárdelos en una variable

rev_div = soup.findAll("Div",attrs={"classe","rvw-bd"})

Recorra todo el rev_div y agregue el texto de revisión a la lista pagewise

para j no intervalo(len(rev_div)):
			# finding all the p tags to fetch only the review text
			pagewise_reviews.append(rev_div[j].achar("p").texto)

Anexar todas las reseñas de páginas a una sola listaall_pages about

para k em alcance(len(pagewise_reviews)):
   all_pages_reviews.append(pagewise_reviews[k])

Al final de la función, devuelve la lista final de reseñas.

return all_pages_reviews
Call the function scraper() and store the output to a variable 'reviews'
# Driver code
reviews = scraper()

Paso 4: almacene los datos en el formato requerido

4.1 almacenamiento en un marco de datos de pandas

i = range(1, len(avaliações)+1)
reviews_df = pd.DataFrame({'Reveja':avaliações}, index=i)
Now let us take a glance of our dataset
imprimir(reviews_df)
17004dataset-5575093

4.2 Escribir el contenido del marco de datos en un archivo de texto

reviews_df.to_csv('comentários.txt', sep = 't')

Com isto, terminamos de extraer las reseñas y almacenarlas en un archivo de texto. Mmm, es bastante simple, não?

Código Python completo:

# !pip install pandas requests BeautifulSoup4 
import pandas as pd
import requests
from bs4 import BeautifulSoup as bs
base_url = "https://www.consumeraffairs.com/food/dominos.html"
all_pages_reviews =[]
  1. def scraper():
        para eu no alcance(1,6): # fetching reviews from five pages
            pagewise_reviews = [] 
            query_parameter = "?page ="+str(eu)
    	url = base_url + query_parameter
    	response = requests.get(url)
    	soup = bs(response.content, 'html.parser') 
    	rev_div = soup.findAll("Div",attrs={"classe","rvw-bd"}) 
    
        para j no intervalo(len(rev_div)):
        # finding all the p tags to fetch only the review text
            pagewise_reviews.append(rev_div[j].achar("p").texto)
    
        para k em alcance(len(pagewise_reviews)):
            all_pages_reviews.append(pagewise_reviews[k]) 
            return all_pages_reviews
    
    # Driver code
    reviews = scraper()
    i = range(1, len(avaliações)+1)
    reviews_df = pd.DataFrame({'Reveja':avaliações}, index=i)
    reviews_df.to_csv('comentários.txt', sep = 't')

Notas finais:

No final deste artigo, hemos aprendido el proceso paso a paso de extraer contenido de cualquier página web y almacenarlo en un archivo de texto.

  • inspeccionar el elemento de destino utilizando las herramientas de desarrollo del navegador
  • utilizar solicitudes para descargar el contenido HTML
  • analizar el contenido HTML usando BeautifulSoup para extraer los datos requeridos

Podemos desarrollar más este ejemplo raspando nombres de usuario, revisando texto. Realice una vectorización en el texto de revisión limpio y agrupe a los usuarios de acuerdo con las revisiones escritas. Podemos usar Word2Vec o CounterVectorizer para convertir texto en vectores y aplicar cualquiera de los algoritmos de agrupamiento de Machine Learning.

Referências:

Biblioteca BeautifulSoup: Documentação, Tutorial en video

DataFrame a CSV

Enlace de repositorio de GitHub para descargar el código fuente

Espero que este blog ayude a comprender el web scraping en Python usando la biblioteca BeautifulSoup. Boa aprendizagem !! 😊

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.