Volver al blog
Guías
Gabriel CiociLast updated on Mar 31, 20265 min read

Cómo extraer datos de las páginas de eBay para obtener información sobre precios

Cómo extraer datos de las páginas de eBay para obtener información sobre precios

Déjame explicártelo con un ejemplo. Acabas de lanzar tu tienda online de cartuchos de videojuegos retro poco comunes y no sabes muy bien cómo fijar los precios de los productos.

Fijar el precio de un producto siempre es un reto: si el precio es demasiado bajo, reduces el margen de beneficio. Si el precio es demasiado alto, los clientes no se interesarán por el producto y lo comprarán a la competencia.

Decisiones, decisiones. ¿Qué podemos hacer? Ante este problema, tienes dos soluciones:

  • Dedicar horas cada día a investigar los precios de la competencia
  • Ser inteligente y crear un script automático que realice esta tarea rutinaria por ti

¿Adivinas qué opción elegiremos para este artículo? Como el tiempo es oro y me gusta hacerme la vida más fácil siempre que puedo, nos decantaremos por la segunda opción.

Si la primera opción te parece más divertida, también puedes leer este artículo de todos modos. Está claro que tienes demasiado tiempo libre.

Cómo te ayudará a tu tienda online el scraping de eBay

eBay es el segundo mayor sitio de comercio electrónico de EE. UU., con una cuota de mercado del 19,7 %. Con 182 millones de usuarios activos, eBay es uno de los mejores sitios que podemos utilizar para la inteligencia de precios.

Para este ejemplo, solo extraeremos el precio del producto, pero eBay es un tesoro de datos. Siempre puedes extraer la sección de reseñas, extraer palabras clave negativas, realizar un análisis de sentimiento y determinar por qué los clientes no están satisfechos con el producto que compraron.

También puedes extraer la sección «Las personas que vieron este artículo también vieron» para averiguar qué quieren los clientes. Puedes utilizar esta información para añadir nuevos productos a tu tienda o crear paquetes con descuento que incluyan más productos. ¡A la gente le encantarán!

Cómo extraer datos de eBay con WebScrapingAPI

Uno de los mayores obstáculos del web scraping es evitar que te bloquee el sitio web que te interesa. Por suerte, no tienes que preocuparte por eso si cuentas con la herramienta adecuada. En este caso, WebScrapingAPI es la mejor solución por tres sencillas razones:

  • Ofrecemos 1000 solicitudes al mes con el paquete gratuito, sin necesidad de tarjeta.
  • La API cuenta con un conjunto de proxies de más de 100 millones de direcciones IP rotativas, lo que garantiza que no se solapen las solicitudes.
  • Puedes integrar su API con una sola línea de código.

Quizá te preguntes por qué utilizamos una API de scraping en lugar de crear la nuestra propia. La razón es muy sencilla: crear una herramienta de scraping desde cero podría llevarte varias semanas.

El mayor problema no es crear la herramienta en sí, sino ajustarla para que los sitios web no la identifiquen como un bot.

Clave de acceso a la API y autenticación

Ve al sitio web de WebScrapingAPI y crea una cuenta. Obtendrás una clave API y 1000 solicitudes gratis.

Instala las dependencias

Nuestro proyecto personal es ligero y solo requiere dos dependencias: axios y cheerio. Axios es un cliente HTTP basado en promesas para Node.JS. Utilizamos esta biblioteca para llamar a la WebScrapingAPI. La segunda biblioteca, cheerio, es una implementación ligera de jQuery para el servidor, y la utilizamos para analizar la página del producto. Utiliza este comando para instalar las dependencias:

npm install axios cheerio

Inicia el proyecto

Crea un archivo index.js y pega en él el siguiente código:

const cheerio = require('cheerio');
const axios = require('axios');

const api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const product_url = 'https://www.ebay.com/itm/174620280276?epid=4444&hash=item28a82e05d4:g:UpMAAOSwfY5gYDr6';
const api_url = `https://api.webscrapingapi.com/v1?api_key=${api_key}&url=${encodeURIComponent(product_url)}`;
const hour_in_ms = 1000 * 60 * 60;

let product_price = null;

const check_price = async () => {

	// Scrape the document

	// Parse the document

	// Process the results

	// Check for any price change in one hour
	setTimeout(check_price, hour_in_ms)

}

(async () => check_price())()

Como puedes ver, utilizamos una función recursiva con un tiempo de espera para rastrear la página del producto cada hora y comprobar si hay algún cambio de precio.

Extraer la(s) página(s)

Reemplaza // Rastrear el documento por este código:

let response;

try {
	response = await axios.get(api_url);
} catch (error) {
	console.log(error);
	process.exit();
}

const $ = cheerio.load(response.data);

Este código utiliza la WebScrapingAPI para rastrear la página de productos de eBay y convierte los resultados en una instancia de cheerio.

Inspecciona el código fuente

Hemos rastreado toda la página del producto, pero solo necesitamos el precio del producto. Podemos utilizar la instancia de cheerio para obtener el valor del precio. El selector para el precio del producto es #mainContent [itemprop="price"].

Analiza el HTML

Reemplaza // Analiza el documento con el siguiente código:

let price = $('#mainContent [itemprop="price"]').html()

Procesar los resultados

El precio tiene este formato: SÍMBOLO DE MONEDA IMPORTE. Solo necesitamos extraer el importe. Reemplaza // Procesar los resultados con este código:

price = parseInt(price
	.split(' ')[1]
	.replace('$', '')
	.replace(' ', '')
	.split(',').join('')
	.split('.')[0])

if(!product_price) {
	console.log(`Initial product price:`, price)
} else {
	if(product_price !== price) {
    		console.log('New price for product:', price)
	}
}

product_price = price

Este código limpiará el precio realizando las siguientes acciones:

  • Eliminar la moneda (US)
  • Eliminar el símbolo de la moneda ($)
  • Eliminar cualquier espacio en blanco ( )
  • Eliminar las comas del número
  • Eliminar los decimales

Una vez analizado el precio, registramos el coste inicial o el nuevo precio si ha cambiado entre las sesiones de scraping.

Conclusión

Con unas pocas líneas de código y una herramienta fantástica como WebScrapingAPI, hemos conseguido crear un script que recupera el precio de cualquier producto de eBay. A partir de aquí, las posibilidades son infinitas. Puedes llevar el script al siguiente nivel e implementar las siguientes mejoras:

  • Extraer el título del producto para facilitar la clasificación de precios
  • Extraer varios productos y comparar el precio
  • Extraer datos de otra página web de eBay (como ebay.de o ebay.ca) y comparar el precio del mismo producto
  • Dar la vuelta a la tortilla y extraer la página del producto de Amazon para comparar los precios entre ambos sitios web para el mismo producto
  • Implementar notificaciones por correo electrónico; para ello, deberías utilizar nodemailer
  • Implementa notificaciones de Slack; puedes usar esta biblioteca para completar la tarea

Lo mejor de esta solución aplicada a un caso de uso real es que puedes hacer todo esto sin gastar ni dinero ni tu valioso tiempo. ¡Esto se debe a que WebScrapingAPI ofrece una prueba gratuita de dos semanas que te permite utilizar todas sus funcionalidades de forma gratuita!

Acerca del autor
Gabriel Cioci, Desarrollador full-stack @ WebScrapingAPI
Gabriel CiociDesarrollador full-stack

Gabriel Cioci es desarrollador full stack en WebScrapingAPI, donde se encarga de crear y mantener los sitios web, el panel de usuario y los componentes principales de la plataforma destinados a los usuarios.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.