Cómo el scraping de eBay puede ayudar a tu tienda online
eBay es la segunda plataforma de comercio electrónico más grande de Estados Unidos, con una cuota de mercado del 19,7 %. Con 182 millones de usuarios activos, eBay es uno de los mejores sitios web que podemos utilizar para analizar los precios.
En este ejemplo, solo extraeremos el precio del producto, pero eBay es una mina de datos. Siempre puedes extraer la sección de reseñas, identificar palabras clave negativas, realizar un análisis de opinión y averiguar por qué los clientes no están satisfechos con el producto que han comprado.
También puedes analizar la sección «A quienes les ha gustado este artículo también les ha gustado» para descubrir qué es lo que buscan 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 el sitio web que te interesa te bloquee. Por suerte, no tienes por qué preocuparte por eso si cuentas con la herramienta adecuada. En este caso, WebScrapingAPI es la mejor solución por tres sencillas razones:
- Con el paquete gratuito, ofrecemos 1.000 solicitudes al mes, sin necesidad de tarjeta.
- La API cuenta con un conjunto 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 una 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
Entra en la página web de WebScrapingAPI y crea una cuenta. Recibirás una clave API y 1.000 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 reducida 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 cheerioIniciar 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 ha habido algún cambio en el precio.
Extrae el contenido de la(s) página(s)
Sustituye // Copia y pega este código en el documento:
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 extraer datos de la página de productos de eBay y convierte los resultados en una instancia de Cheerio.
Revisa el código fuente
Hemos extraído toda la página del producto, pero solo necesitamos el precio. Podemos utilizar la instancia de Cheerio para obtener el valor del precio. El selector para el precio del producto es #mainContent [itemprop="price"].
Analizar el código HTML
Sustituye // Analiza el documento con el siguiente código:
let price = $('#mainContent [itemprop="price"]').html()Procesar los resultados
El precio aparece en este formato: SÍMBOLO DE LA MONEDA IMPORTE. Solo tenemos que extraer el importe. Sustituye // y procesa 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 depurará el precio realizando las siguientes acciones:
- Eliminar la divisa (EE. UU.)
- Elimina el símbolo de la moneda ($)
- Elimina cualquier espacio en blanco ( )
- Elimina las comas del número
- Elimina los decimales
Una vez analizado el precio, registramos el coste inicial o el nuevo precio, si ha cambiado entre las sesiones de recopilación de datos.
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 un paso más allá e implementar las siguientes mejoras:
- Extrae el título del producto para facilitar la clasificación de precios
- Busca varios productos y compara los precios
- Extrae datos de otra página web de eBay (como ebay.de o ebay.ca) y compara el precio del mismo producto
- Da la vuelta a la situación, extrae los datos de la página del producto en Amazon y compara los precios del mismo producto en ambas páginas web.
- Implementa notificaciones por correo electrónico; para ello, deberías utilizar Nodemailer
- Implementa notificaciones de Slack; puedes utilizar esta biblioteca para llevar a cabo 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. ¡Y es que WebScrapingAPI ofrece una prueba gratuita de dos semanas que te permite utilizar todas sus funciones sin coste alguno!




