escuro proxyscrape logótipo

Web Scraping for Price Comparison in 2024– Easy Steps

Python, Raspagem, Jan-03-20235 minutos de leitura

O Web scraping é a arte de extrair dados da Internet. No que diz respeito às suas aplicações, existe uma grande quantidade de aplicações. Uma delas é a comparação de preços de diferentes sítios Web. As compras em linha tornaram-se o boom da indústria atual e a comparação dos preços de determinados produtos tornou-se uma necessidade. Todos nós visitamos vários sítios Web quando precisamos de comprar um determinado produto, mas já pensou em criar uma ferramenta de comparação de preços que faça o mesmo trabalho por si e lhe apresente a melhor oferta?  

Neste artigo, vamos criar uma ferramenta fantástica de comparação de preços em Python que lhe permitirá acompanhar o preço dos produtos em diferentes fontes e informá-lo sobre o desempenho dos diferentes concorrentes no mercado. Além disso, também informará a empresa se o preço de um produto específico sobe ou desce o preço previsto.

A fonte de dados que iremos utilizar neste artigo será um ficheiro JSON e iremos comparar os preços dos produtos que obtemos na Amazon, eBay e Walmart. Os nossos dados de amostra são os seguintes,

Para saber mais sobre a recolha de dados da Web para comparação de preços em python, consulte qualquer secção!

Índice

Etapas envolvidas na recolha de dados da Web para comparação de preços:

[
  {
    "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"
  }
]

Alguns dos campos importantes para o guião que estamos a escrever são amazon_price, ebay_price e walmart_price.

Agora já vimos os nossos dados. Vamos então passar à fase de desenvolvimento.

Vamos criar a ferramenta em Python 3.x e, em primeiro lugar, vamos utilizar a biblioteca JSON para analisar o JSON e processar posteriormente. A ferramenta oferece uma funcionalidade fantástica, imprimindo o nome do produto e o preço do sítio. Estamos a importar a biblioteca JSON para analisar o JSON.

importar json

Agora vamos chamar a função open() no trecho de código para ler o conteúdo do ficheiro JSON,

importar json
 
se __name__ == '__main__':
    dados_preço = Nenhum
    preço = []
   with open('data.json', encoding='utf8') as f:
        dados_preço = f.read()
 
   se price_data não for None:
       json_price_data = json.loads(price_data)

Agora que os nossos dados JSON foram lidos, vamos convertê-los nas estruturas de dados integradas do Python, para as quais o código irá chamar o método json.loads() para converter a cadeia JSON num dicionário ou numa lista de dicionários, dependendo das entradas.

Uma vez que o objetivo principal é encontrar a loja que vende o produto ao preço mais baixo, a nossa meta é encontrar o preço mínimo e outros detalhes relevantes como o produto e o nome da loja. A informação sobre o preço da loja relevante é armazenada nas chaves amazon_price, ebay_price e Walmart_price. Para encontrar o mínimo de cada produto, precisamos de iterar os itens da lista de preços.

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 a utilizar lambdas e a definir a chave de min() para garantir que o campo de preço está a ser comparado. Produz o seguinte resultado:

Vamos reestruturar um pouco o 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 = []

O resultado será o seguinte:

Parabéns! Criámos com êxito o script que pode executar periodicamente para obter os preços actualizados do produto.

Qual é o melhor proxy para Web Scraping para comparação de preços usando Python?

ProxyScrape é um dos mais populares e fiáveis fornecedores de proxy online. Os três serviços proxy incluem servidores proxy dedicados a centros de dados, servidores proxy residenciais e servidores proxy premium. Então, qual é a melhor solução possível para o melhor proxy HTTP para a recolha de dados da Web para comparação de preços utilizando python? Antes de responder a essas perguntas, é melhor ver as características de cada servidor proxy.

Um proxy de centro de dados dedicado é o mais adequado para tarefas online de alta velocidade, como a transmissão de grandes quantidades de dados (em termos de tamanho) de vários servidores para fins de análise. Esta é uma das principais razões pelas quais as organizações escolhem proxies dedicados para transmitir grandes quantidades de dados num curto espaço de tempo.

Um proxy de centro de dados dedicado tem várias características, tais como largura de banda ilimitada e ligações simultâneas, proxies HTTP dedicados para facilitar a comunicação e autenticação IP para maior segurança. Com 99,9% de tempo de atividade, pode ter a certeza de que o centro de dados dedicado funcionará sempre durante qualquer sessão. Por último, mas não menos importante, ProxyScrape fornece um excelente serviço de apoio ao cliente e ajudá-lo-á a resolver o seu problema no prazo de 24-48 horas úteis. 

O próximo é um proxy residencial. O proxy residencial é um proxy de referência para todos os consumidores em geral. A principal razão é que o endereço IP de um proxy residencial se assemelha ao endereço IP fornecido pelo ISP. Isto significa que obter permissão do servidor de destino para aceder aos seus dados será mais fácil do que o habitual. 

A outra caraterística do proxy residencial do ProxyScrapeé uma funcionalidade rotativa. Um proxy rotativo ajuda-o a evitar uma proibição permanente da sua conta porque o seu proxy residencial altera dinamicamente o seu endereço IP, tornando difícil para o servidor de destino verificar se está a utilizar um proxy ou não. 

Para além disso, as outras características de um proxy residencial são: largura de banda ilimitada, juntamente com ligação simultânea, proxies HTTP/s dedicados, proxies em qualquer sessão de tempo devido aos mais de 7 milhões de proxies no pool de proxies, autenticação de nome de utilizador e palavra-passe para maior segurança e, por último, mas não menos importante, a capacidade de mudar o servidor do país. Pode selecionar o servidor pretendido anexando o código do país à autenticação do nome de utilizador. 

O último é o proxy premium. Os proxies premium são iguais aos proxies dedicados de centros de dados. A funcionalidade permanece a mesma. A principal diferença é a acessibilidade. Nos proxies premium, a lista de proxies (a lista que contém proxies) é disponibilizada a todos os utilizadores da rede ProxyScrape. É por isso que os proxies premium custam menos do que os proxies dedicados de centros de dados.

Então, qual é a melhor solução possível para o melhor proxy HTTP para a recolha de dados da Web para comparação de preços utilizando python? A resposta seria "proxy residencial." A razão é simples. Como dito acima, o proxy residencial é um proxy rotativo, o que significa que seu endereço IP seria alterado dinamicamente durante um período de tempo, o que pode ser útil para enganar o servidor enviando muitas solicitações dentro de um pequeno período de tempo sem obter um bloco de IP. 

Em seguida, o melhor seria alterar o servidor proxy com base no país. Basta acrescentar o ISO_CODE do país no final da autenticação IP ou da autenticação por nome de utilizador e palavra-passe. 

Leituras sugeridas:

  1. Extrair comentários do YouTube - 5 passos simples
  2. As 8 melhores ferramentas de raspagem da Web Python em 2023
  3. Raspagem da Web para artigos de notícias usando Python - a melhor maneira em 2023

Perguntas frequentes:

1. O que é o price scraping?
A recolha de preços, como o nome sugere, é o processo de extração do preço de um produto ou serviço em linha para efetuar qualquer análise, como a análise da concorrência, a fim de melhorar a estratégia de marketing. Automatizar o processo de recolha de preços pode ajudá-lo a reduzir o tempo e os recursos, e pode fazê-lo com a ajuda do python.
2. Qual é o melhor proxy para a recolha de dados da Web para comparação de preços?
The best proxy to perform web scraping for price comparison is a “residential proxy.” The reason is that the residential proxy is a rotating proxy, meaning that your IP address would be dynamically changed over a period of time which can be helpful to trick the server by sending a lot of requests within a small time frame without getting an IP block.
3. A recolha de dados da Web para comparação de preços é legal?
A resposta é sim. É possível extrair o preço de um sítio Web de comércio eletrónico, uma vez que todas as informações são disponibilizadas ao público, o que significa que todos os dados públicos podem ser extraídos.

Conclusão

Este artigo explorou mais uma maravilha da recolha de dados da Web, ou seja, a "Comparação de preços". Além disso, criámos uma ferramenta que pode fazer o trabalho de comparação de preços por si e mantê-lo atualizado com as tendências do mercado. Este artigo espera fornecer informações suficientes sobre a recolha de dados da Web para comparação de preços de uma forma fácil. Um servidor proxy é o melhor companheiro para o web scraping. ProxyScrape fornece o melhor proxy residencial da sua classe para o seu web scraping para projectos de comparação de preços. Pode consultar o melhor proxy residencial aqui.