Web Scraping para la comparación de precios en 2024- Pasos sencillos

Python, Scraping, Jan-04-20235 minutos de lectura

El web scraping es el arte de extraer datos de Internet. Cuando se trata de sus aplicaciones tiene una gran cantidad de aplicaciones. Una de ellas es la comparación de precios de diferentes sitios web. Las compras en línea se han convertido en el boom del sector, y comparar los precios de determinados productos se ha convertido en una necesidad. Nosotros

El web scraping es el arte de extraer datos de Internet. Cuando se trata de sus aplicaciones tiene una gran cantidad de aplicaciones. Una de ellas es la comparación de precios de diferentes sitios web. Las compras en línea se han convertido en el boom del sector, y comparar los precios de determinados productos se ha convertido en una necesidad. Todos visitamos varios sitios web cuando necesitamos comprar un producto determinado, pero ¿has pensado alguna vez en crear una herramienta de comparación de precios que haga el mismo trabajo por ti y te ofrezca la mejor oferta?  

En este artículo, vamos a hacer un raspado web increíble para la herramienta de comparación de precios en Python que le permitirá realizar un seguimiento del precio de los productos a través de diferentes fuentes y le informará sobre el rendimiento de los diferentes competidores en el mercado. Además, también informará a la empresa si el precio de un producto específico sube o baja el precio previsto.

La fuente de datos que utilizaremos para este artículo será un archivo JSON, y compararemos los precios de los productos que obtenemos de Amazon, eBay y Walmart. Nuestros datos de muestra se ven como a continuación,

¡Siéntase libre de saltar a cualquier sección para aprender más sobre web scraping para la comparación de precios en python!

Índice

Pasos del Web Scraping para la comparación de precios:

[
  {
    "last_visited": "2018-01-30T13:38:01",
    "name": "PUMA Men's Evospeed 17.4 TT Soccer Shoe",
    "amazon_price": 36.94,
    "ebay_price": 37,
    "walmart_price": 37,
    "amazon_url": "https://www.amazon.com/PUMA-Evospeed-Soccer-Ultra-Yellow-Peacoat-Orange/dp/B01J5LEMZI/",
    "ebay_url": "https://www.ebay.com/itm/PUMA-Mens-Evospeed-17-4-Tt-Soccer-Shoe/302471489090",
    "walmart_url": "https://www.walmart.com/ip/PUMA-Men-s-Evospeed-17-4-Tt-Soccer-Shoe/587074448",
    "description": "The new evospeed 17.4 is a performance football boot for players of all levels. The soft and lightweight synthetic leather on the upper keeps the boot lightweight, comfortable and ensures durability. The lightweight outsole offers the perfect balance between traction, stability and acceleration PUMA is the global athletic brand that successfully fuses influences from sport, lifestyle and fashion. PUMA's unique industry perspective delivers the unexpected in sport-lifestyle footwear, apparel and accessories, through technical innovation and revolutionary design.",
    "brand": "PUMA",
    "image": "https://images-na.ssl-images-amazon.com/images/I/61v1mylcAqL._UL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:07",
    "name": "L'Oreal Paris Skin Care Revitalift Cicacream Face Moisturizer",
    "amazon_price": 13.97,
    "ebay_price": 13.99,
    "walmart_price": 13.97,
    "amazon_url": "https://www.amazon.com/LOreal-Paris-Revitalift-Cicacream-Moisturizer/dp/B074MBDRHW",
    "ebay_url": "https://www.ebay.com/itm/LOREAL-Paris-NEW-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair-ORIGINAL/112715734801",
    "walmart_url": "https://www.walmart.com/ip/L-Or-al-Paris-Revitalift-Cicacream-Anti-Wrinkle-Skin-Barrier-Repair/519350834",
    "description": "Skin's moisture barrier weakens with age, resulting in greater moisture loss, more prominent wrinkles and loss of firmness. Lightweight, protective cream is formulated with Pro-Retinol, a powerful wrinkle-fighting ingredient and Centella Asiatica, an herb used in traditional Chinese medicine. Strengthens and repairs skin barrier to help resist visible lines, loss of firmness and other signs of aging that a weakened skin barrier can accentuate. See visible results immediately: skin feels healthier, softer, smoother and more supple. Skin feels noticeably more hydrated. Skin barrier is stronger, helping to resist signs of aging. In two weeks: fine lines appear visibly reduced. Firmness and elasticity look noticeably improved. In four weeks: wrinkles appear less visible. Clarity and tone improves, skin exudes luminosity. Skin continues to look and feel soft, smooth, healthy.",
    "brand": "L'Oreal Paris",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Ff2vn4vjL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:12",
    "name": "Adidas Dynamic Pulse By Adidas For Men",
    "amazon_price": 6.96,
    "ebay_price": 18.99,
    "walmart_price": 7,
    "amazon_url": "https://www.amazon.com/Adidas-Dynamic-Toilette-3-4-Ounce-Bottle/dp/B000VON5F2/",
    "ebay_url": "https://www.ebay.com/itm/Adidas-DYNAMIC-PULSE-Cologne-for-Men-3-4-oz-edt-3-3-Spray-New-in-BOX/252837623533",
    "walmart_url": "https://www.walmart.com/ip/Adidas-Dynamic-Pulse-for-Men-3-4-oz-EDT/28664356",
    "description": "Launched by the design house of Adidas in 1997, ADIDAS DYNAMIC PULSE is a men's fragrance that possesses a blend of A fresh scent of citrus, cedar and mint with low tones of sweet fruits, fragrant woods and tonka bean. It is recommended for daytime wear.When applying any fragrance please consider that there are several factors which can affect the natural smell of your skin and, in turn, the way a scent smells on you. For instance, your mood, stress level, age, body chemistry, diet, and current medications may all alter the scents you wear. Similarly, factor such as dry or oily skin can even affect the amount of time a fragrance will last after being applied",
    "brand": "adidas",
    "image": "https://images-na.ssl-images-amazon.com/images/I/41%2BAnOP5nbL.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:19",
    "name": "Canon EOS Rebel T6 Digital SLR Camera",
    "amazon_price": 449,
    "ebay_price": 449,
    "walmart_price": 449,
    "amazon_url": "https://www.amazon.com/Canon-Digital-Camera-18-55mm-3-5-5-6/dp/B01CO2JPYS",
    "ebay_url": "https://www.ebay.com/itm/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens/232596041502",
    "walmart_url": "https://www.walmart.com/ip/Canon-EOS-Rebel-T6-DSLR-Camera-with-18-55mm-Lens-Black/50820749",
    "description": "",
    "brand": "Canon",
    "image": "https://images-na.ssl-images-amazon.com/images/I/81YszfZS8%2BL._SL1500_.jpg"
  },
  {
    "last_visited": "2018-01-30T13:38:25",
    "name": "Woodland Fox Critter 36' Mylar Balloon",
    "amazon_price": 5.49,
    "ebay_price": 6.49,
    "walmart_price": 7.6,
    "amazon_url": "https://www.amazon.com/Woodland-Fox-Critter-Mylar-Balloon/dp/B00S9TKVYO",
    "ebay_url": "https://www.ebay.com/itm/Woodland-Critters-Fox-36-inch-Foil-Balloon/132058119680",
    "walmart_url": "https://www.walmart.com/ip/Woodland-Fox-Foil-Balloon/43350002",
    "description": "Celebrate any occasion with an adorable woodland fox critter balloon! 36\" Woodland Critters fox shape foil balloon.",
    "brand": "Betallic",
    "image": "https://images-na.ssl-images-amazon.com/images/I/71Z9bG-BzuL._SL1500_.jpg"
  }
]

Algunos de los campos importantes para el script que estamos escribiendo son amazon_price, ebay_price y walmart_price.

Ahora ya hemos visto nuestros datos. Así que pasemos a la fase de desarrollo.

Vamos a hacer la herramienta en Python 3.x, y en primer lugar, vamos a utilizar la biblioteca JSON para parsear JSON y su posterior procesamiento. La herramienta proporciona una funcionalidad sorprendente al imprimir el nombre del producto y el precio del sitio. Estamos importando la biblioteca JSON para analizar JSON.

importar json

Ahora llamaremos a la función open() del fragmento de código para leer el contenido del archivo JSON,

importar json
 
if __name__ == '__main__':
    datos_precio = None
    precio = []
   with open('datos.json', encoding='utf8') as f:
        datos_precios = f.read()
 
   si datos_precios no es None
       json_datos_precio = json.loads(datos_precio)

Ahora que nuestros datos JSON son leídos, los convertiremos en estructuras de datos incorporadas de Python para lo cual el código llamará al método json.loads() para convertir la cadena JSON en un diccionario o una lista de diccionarios, dependiendo de las entradas.

Dado que el objetivo principal es encontrar la tienda que vende el producto al precio más bajo, nuestro objetivo es encontrar el precio mínimo y otros detalles relevantes como el producto y el nombre de la tienda. La información sobre el precio de la tienda correspondiente se almacena en las claves amazon_price, ebay_price y Walmart_price. Para encontrar el mínimo de cada producto, tenemos que iterar los elementos de la lista de precios.

for d in json_price_data:
            price.append({'name': d['name'], 'price': float(d['amazon_price']), 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': float(d['walmart_price']), 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': float(d['ebay_price']), 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: x['price'])
            print(minPricedItem)
            print('=================')
            price = []

Estamos utilizando lambdas y estableciendo la clave de min() para asegurarnos de que se está comparando el campo precio. Se produce la siguiente salida:

Vamos a reestructurar un poco el formato.

for d in json_price_data:
            price.append({'name': d['name'], 'price': d['amazon_price'], 'url': d['amazon_url']})
            price.append({'name': d['name'], 'price': d['walmart_price'], 'url': d['walmart_url']})
            price.append({'name': d['name'], 'price': d['ebay_price'], 'url': d['ebay_url']})
            minPricedItem = min(price, key=lambda x: float(x['price']))
            store_name = ''
            # Pick the store name based on url
            if 'amazon' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'walmart' in minPricedItem['url'].lower():
                store_name = 'Amazon'
            elif 'ebay' in minPricedItem['url'].lower():
                store_name = 'eBay'
            print('{} is available in cheap price at {}. The price is ${}'.format(minPricedItem['name'], store_name,
                                                                                 minPricedItem['price']))
            price = []

Dará el siguiente resultado:

¡Enhorabuena! Hemos realizado con éxito el script que puede ejecutar periódicamente para obtener los precios actualizados del producto.

¿Cuál es el mejor proxy para Web Scraping para la comparación de precios usando Python?

ProxyScrape es uno de los proveedores de proxy en línea más populares y fiables. Tres servicios de proxy incluyen servidores proxy de centros de datos dedicados, servidores proxy residenciales y servidores proxy premium. Entonces, ¿cuál es la mejor solución posible para el mejor proxy HTTP para web scraping para la comparación de precios utilizando python? Antes de responder a esa pregunta, lo mejor es ver las características de cada servidor proxy.

Un proxy dedicado de centro de datos es el más adecuado para tareas en línea de alta velocidad, como la transmisión de grandes cantidades de datos (en términos de tamaño) desde varios servidores con fines de análisis. Es una de las principales razones por las que las organizaciones eligen proxies dedicados para transmitir grandes cantidades de datos en poco tiempo.

Un proxy dedicado de centro de datos tiene varias características, como ancho de banda ilimitado y conexiones concurrentes, proxies HTTP dedicados para facilitar la comunicación y autenticación IP para mayor seguridad. Con un tiempo de actividad del 99,9%, puede estar seguro de que el centro de datos dedicado siempre funcionará durante cualquier sesión. Por último, pero no por ello menos importante, ProxyScrape ofrece un excelente servicio de atención al cliente y le ayudará a resolver su problema en un plazo de 24-48 horas laborables. 

El siguiente es un proxy residencial. Residencial es un proxy para todos los consumidores en general. La razón principal es que la dirección IP de un proxy residencial se parece a la dirección IP proporcionada por el ISP. Esto significa que obtener el permiso del servidor de destino para acceder a sus datos será más fácil de lo habitual. 

La otra característica del proxy residencial de ProxyScrapees la rotación. Un proxy rotativo te ayuda a evitar un bloqueo permanente de tu cuenta porque tu proxy residencial cambia dinámicamente tu dirección IP, dificultando que el servidor de destino compruebe si estás usando un proxy o no. 

Aparte de eso, las otras características de un proxy residencial son: ancho de banda ilimitado, junto con la conexión concurrente, dedicado HTTP / s proxies, proxies en cualquier sesión de tiempo debido a los más de 7 millones de proxies en la piscina de proxy, nombre de usuario y contraseña de autenticación para mayor seguridad, y por último pero no menos importante, la capacidad de cambiar el servidor de país. Puede seleccionar el servidor que desee añadiendo el código del país a la autenticación del nombre de usuario. 

El último es el proxy premium. Los proxies premium son iguales que los proxies de centro de datos dedicados. La funcionalidad sigue siendo la misma. La principal diferencia es la accesibilidad. En los proxies premium, la lista de proxies (la lista que contiene los proxies) se pone a disposición de todos los usuarios de la red ProxyScrape. Por eso los proxies premium cuestan menos que los proxies de centro de datos dedicados.

Entonces, ¿cuál es la mejor solución posible para el mejor proxy HTTP para el web scraping para la comparación de precios utilizando python? La respuesta sería "proxy residencial". La razón es simple. Como se dijo anteriormente, el proxy residencial es un proxy rotativo, lo que significa que su dirección IP se cambiaría dinámicamente durante un período de tiempo que puede ser útil para engañar al servidor mediante el envío de una gran cantidad de solicitudes dentro de un marco de tiempo pequeño sin obtener un bloqueo de IP. 

A continuación, lo mejor sería cambiar el servidor proxy en función del país. Sólo tienes que añadir el país ISO_CODE al final de la autenticación IP o autenticación de nombre de usuario y contraseña. 

Lecturas recomendadas:

Scrapear comentarios de YouTube - 5 sencillos pasosLas 8 Mejores Herramientas de Python para Web Scraping en 2023Web Scraping Para Artículos De Noticias Usando Python- La Mejor Manera En 2023

Preguntas frecuentes:

1. ¿Qué es el raspado de precios?
Price scraping, como su nombre indica, es el proceso de extraer el precio de un producto o un servicio en línea para realizar cualquier análisis, como el de la competencia, con el fin de mejorar la estrategia de marketing. Automatizar el proceso de scraping puede ayudarte a reducir tiempo y recursos, y puedes hacerlo con la ayuda de python.
2. ¿Cuál es el mejor proxy para el scraping web para la comparación de precios?
El mejor proxy para realizar web scraping para comparación de precios es un "proxy residencial". La razón es que el proxy residencial es un proxy rotativo, lo que significa que su dirección IP cambiaría dinámicamente durante un periodo de tiempo, lo que puede ser útil para engañar al servidor enviando muchas peticiones en un periodo de tiempo pequeño sin obtener un bloqueo de IP.
3. ¿Es legal el web scraping para comparar precios?
La respuesta es sí. Puede extraer el precio de un sitio web de comercio electrónico, ya que toda la información está a disposición del público, lo que significa que todos los datos públicos pueden extraerse.

Conclusión

This article explored one more wonder of web scraping, i.e. “Price Comparison”. Not only this, we have built a tool that can do the price comparison job for you and keep you updated with the market trends. This article hopes to give enough information on web scraping for price comparison in an easy way. A proxy server is the best companion for web scraping. ProxyScrape provides best in a class residential proxy for your web scraping for price comparison projects. You can check the best residential proxy here.