In this Article
Ya sea que esté trabajando en su propia idea o en un proyecto de empresa, los datos son el elemento que necesita. Al iniciar un nuevo proyecto o desarrollar una estrategia para un negocio existente, es necesario analizar un gran volumen de datos. Este análisis ayuda a formular soluciones de varias maneras según el conjunto de datos y el planteamiento del problema. Ahí es donde entra en juego el web scraping.
El mayor enfoque en el análisis del comportamiento del cliente impulsa a más empresas minoristas a utilizar técnicas de web scraping, en particular la extracción de datos. Una de las actividades importantes que toda empresa debe implementar es monitorear los precios de la competencia, la disponibilidad de productos y las opiniones de los clientes.
En este tutorial, mostraremos cómo iniciar el web scraping de Python para un mejor análisis de datos de productos en Amazon.
Configuración inicial: ¿Qué descargar?
Antes de comenzar a rastrear páginas de Amazon usando Python, asegurémonos de que su entorno esté configurado correctamente. En caso de que no tenga Python 3.x instalado en su computadora, puede descargarlo desde https://www.python.org/.
- Código de Visual Studio (código VS)
Para ejecutar todos los comandos necesarios, puede usar la terminal en Visual Studio Code (VS Code). Simplemente descargue VS Code desde sitio web oficial y siga las instrucciones de instalación de su sistema operativo.
Para configurar su entorno Python:
- Abra VS Code e instale la extensión Python haciendo clic en el icono cuadrado en la barra lateral.
Si no tienes Python instalado, verás no encontrado: pitón. Si todo funciona, verá la versión actual como se muestra a continuación.
Cree una nueva carpeta de proyecto:
- En VS Code, abra la carpeta donde desea crear su proyecto seleccionando Archivo – Abrir carpeta. Cree un nuevo archivo Python para su script, por ejemplo, amazon_scraper.py
Instale dos bibliotecas de terceros para Python
Para este paso, necesitaremos instalar pipa. pepita, también conocido como pip3, es un sistema de administración de paquetes para Python que se utiliza para instalar y administrar paquetes de software.
- Una vez que tenga la terminal abierta, puede instalar las bibliotecas necesarias usando pipa, que es el instalador del paquete para Python. Así que comprueba si tienes pipa ya instalado:
*Para instalar pipa puedes usar Asegurarpip, escriba uno de estos comandos en terminales:
python -m ensurepip
python3 -m ensurepip
- Ahora, usa pipa para instalar las bibliotecas necesarias. necesitamos “solicitudes”, “beautifulsoup4”, “pandas”, “lxml” y “html5lib”.
pip3 install requests
pip3 install beautifulsoup4
pip3 install pandas
pip3 install lxml
pip3 install html5lib
¿Por qué necesitamos estas bibliotecas?
-
- Solicitudes: Con esta biblioteca podemos realizar conexiones HTTP a la página de Amazon. Nos ayudará a extraer el contenido HTML sin formato de la página de destino.
- Hermosa sopa: esta poderosa herramienta nos ayuda a extraer los datos necesarios del HTML sin formato utilizando la biblioteca de Solicitudes.
- pandas: se utiliza para la manipulación y el análisis de datos, puede organizar los datos extraídos en DataFrames para un análisis eficiente y exportarlos a varios formatos como CSV.
- lxml: una potente biblioteca para el análisis rápido de documentos XML y HTML.
- html5lib: una biblioteca pura de Python para analizar HTML que sigue la especificación HTML5.
Elementos raspadores de un producto.
Comencemos el proceso principal. Entre toda la información proporcionada en el sitio de Amazon, nos centraremos en extraer dichos elementos:
- Nombre del producto;
- Calificación;
- Precio;
- Imágenes;
- Descripción.
Para este tutorial, elegimos este producto: https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY
Enviar una solicitud a la página del producto
*Antes de enviar una solicitud, también tenemos que importar las bibliotecas que hemos instalado recientemente:
import requests
from bs4 import BeautifulSoup
import pandas as pd
En este paso, enviaremos una solicitud HTTP a la URL de la página del producto de Amazon para recuperar su contenido HTML. Al utilizar el Solicitudes biblioteca, puede simular la solicitud de un navegador web para acceder a la página web. Incluya encabezados apropiados como Agente de usuario para imitar un navegador real y evitar fallos de conexión. La respuesta del servidor, que contiene el contenido HTML de la página, se almacena para su posterior procesamiento y extracción de datos.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language': 'en-US, en;q=0.5'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')
Nombre del producto
- Ubicación
una vez que inspeccionar el título encontraremos que el texto del título se encuentra dentro del etiqueta h1 con el título de identificación. Volvamos a nuestro archivo y escribamos el código para extraer esta información de Amazon.
- Nombre del producto de raspado
Extraeremos el nombre del producto del contenido HTML de la página del producto de Amazon. Usando el hermosasopa biblioteca, analizamos el contenido HTML y localizamos el elemento con el nombre del producto utilizando su etiqueta HTML y sus atributos. Una vez que se encuentra el elemento, extraemos el contenido del texto, a menudo usando métodos como encontrar() o buscar_todos() junto con selectores CSS o expresiones XPath. Finalmente, el nombre del producto extraído se formatea según sea necesario antes del siguiente paso.
*Utilizando el texto atributo podemos extraer información del texto.
product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)
Después de ejecutar este código, tendremos dicho resultado en el terminales:
Imágenes del producto
- Ubicación
Para extraer imágenes de productos de la página de productos de Amazon, debe ubicar los elementos HTML que contienen las URL de las imágenes. En las páginas de productos de Amazon, las imágenes suelen almacenarse dentro de ‘img’ etiquetas. Una clase común para imágenes dinámicas en Amazon es ‘una-imagen-dinamica’.
- Raspar imágenes del producto
uso hermosasopa para analizar el contenido HTML recuperado de la solicitud. Extrae el ‘src’ atributo de cada ‘img’ etiqueta, que contiene la URL de la imagen.
image_tags = soup.find_all('img', {'class':'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)
*A veces, después de escribir este código, pueden surgir algunos problemas para obtener los resultados deseados. Si muestra 0 imágenes, es mejor inspeccionar la estructura HTML y asegurarse de haber encontrado la clase y el atributo correctos. En tales casos, puedes probar este código:
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
image_tags = soup.find_all('img')
product_images = []
for img_tag in image_tags:
image_url = img_tag.get('src')
if image_url:
product_images.append(image_url)
print('Product Images:', product_images)
else:
print(f"Request failed with status code: {response.status_code}")
Esto devolverá todas las imágenes de alta resolución del producto en una lista.
* Las páginas de productos de Amazon suelen incluir varias imágenes de un solo producto. Capture todas las imágenes relevantes procesando todos los elementos de la lista.
Calificación del producto
- Ubicación
Puedes encontrar la calificación en el primer ‘Yo etiqueto con clase’un-icono-alt’.
* Asegúrese de ajustar el nombre de la clase de acuerdo con la estructura HTML específica de la página del producto de Amazon que está extrayendo. Si el nombre de la clase es diferente, deberá reemplazarlo ‘un-icono-alt’ con el nombre de clase correcto.
- Calificación del producto raspado
Ahora, para extraer la calificación del producto, ubique el elemento HTML que representa la calificación en la página del producto de Amazon usando su ‘clase’ atributo, como ‘un-icono-alt. Una vez encontrado, recupera el contenido de texto del elemento, que representa el valor de calificación, y luego lo limpia para su posterior procesamiento.
product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)
Verás este resultado:
Precio del producto
- Ubicación
Para extraer el precio del producto, identificaremos el elemento HTML que muestra el precio, específicamente el que se encuentra justo debajo de la calificación. En la página de producto de Amazon, este precio suele estar contenido dentro de un ‘abarcar etiqueta con la clase ‘un-precio’. Una vez que haya localizado este ‘abarcar etiqueta, puede navegar hasta su primer ‘abarcar etiqueta para recuperar el valor del precio real.
- Precio del producto raspado
En este código, el contenedor de precios La variable almacena el ‘abarcar elemento con la clase ‘un-precio’, y el precio recupera el texto de su primer ‘abarcar etiqueta con la clase ‘fuera de pantalla, que contiene el precio.
product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)
El resultado será:
Descripción del producto
- Ubicación
Para extraer la descripción del producto de la página del producto de Amazon, debe ubicar los elementos HTML que contienen la descripción. Las descripciones de los productos de Amazon a menudo se encuentran dentro de un ‘div’ o ‘abarcar etiqueta con el ‘id descripción del producto’. Si el específico ‘div’ no se encuentra, comprueba el ‘ul’ con la clase’una-lista-desordenada-una-vertical-un-espaciado-mini’ para descripciones con viñetas.
*Los detalles de la descripción se almacenan dentro del ‘tr’ etiquetas con clase ‘un-espaciado-pequeño’. Una vez que los encuentre, deberá encontrar tanto el ‘abarcar debajo para encontrar el texto.
-
Descripción del producto raspado
Al ejecutar este script, debería poder extraer la descripción del producto del archivo ‘balas de características sección de la página del producto de Amazon. Esta es una sección común que contiene viñetas que describen las características del producto.
description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)
Obtendrás esto:
Después de extraer toda la información requerida, puede almacenar los datos en un diccionario. Luego, puedes convertir este diccionario en un marco de datos de pandas para facilitar la manipulación y visualización de datos.
product_info = {
'Name': product_name,
'Rating': product_rating,
'Price': product_price,
'Images': product_images,
'Description': product_description
}
df = pd.DataFrame([product_info])
print(df)
Código completo
Puede modificar fácilmente el código para recopilar más datos de la página del producto de Amazon, como reseñas de clientes, detalles del producto o información del vendedor. Al verificar la estructura HTML, puede ajustar el código para extraer estos elementos adicionales. Puede resultar útil para uso personal o integrarse en una aplicación que rastrea los precios de Amazon, ayudando a los usuarios a encontrar las mejores ofertas.
Por ahora, el código tiene este aspecto. Si sigue este tutorial paso a paso, podrá ver cómo funciona cada parte del código y realizar más cambios para satisfacer sus necesidades específicas.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language': 'en-US, en;q=0.5'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')
product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
image_tags = soup.find_all('img')
product_images = []
for img_tag in image_tags:
image_url = img_tag.get('src')
if image_url:
product_images.append(image_url)
print('Product Images:', product_images)
else:
print(f"Request failed with status code: {response.status_code}")
product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)
product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)
image_tags = soup.find_all('img', {'class': 'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)
description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)
product_info = {
'Name': product_name,
'Rating': product_rating,
'Price': product_price,
'Images': product_images,
'Description': product_description
}
df = pd.DataFrame([product_info])
print(df)
El formato tabular se muestra en su consola o terminal Python cuando ejecuta el script. Después de ejecutar el script, el DataFrame se imprime directamente en la terminal, donde se pueden ver los datos organizados en filas y columnas.
Consejos para eliminar páginas de Amazon con Python:
- Respete los Términos de servicio de Amazon;
- Analice HTML cuidadosamente y complete los controles de seguridad;
- Actualice periódicamente su código ya que la estructura de las páginas de Amazon puede cambiar;
- Utilice encabezados adecuados, como “Agente de usuario” y “Idioma de aceptación”;
- Utilice Proxies y rotación de IP.
Pruebe DataImpulse para extraer Amazon
Al utilizar proxies, envía solicitudes desde diferentes IP, como si fueran diferentes dispositivos, ubicaciones y zonas horarias. Los sitios nunca sospecharán de ti, ni te pedirán que introduzcas un captcha, ni siquiera te prohibirán. Con nosotros obtendrás:
- Datos actualizados;
- Rotación de IP, sin IP en listas negras;
- Solución de problemas de verificación;
- APIs intuitivas que se adaptan rápidamente a los cambios en la estructura HTML de Amazon;
- Potente infraestructura, perfecta para grandes proyectos de scraping;
- Soporte humano 24 horas al día, 7 días a la semana.
Contáctenos en [email protected] o haga clic en “Pruébalo ahora” botón en la esquina superior derecha.
*Este tutorial tiene fines puramente educativos y sirve como demostración de capacidades técnicas. Es importante reconocer que la extracción de datos de Amazon genera preocupaciones con respecto a los términos de uso y la legalidad. El scraping no autorizado puede tener consecuencias graves, incluidas acciones legales y suspensión de cuentas. Proceda siempre con precaución y siga las pautas éticas.



















