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 cheerioInicia 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!




