Web Scraping para comparação de preços em 2024 - Etapas fáceis

Python, Scraping, Mar-06-20245 minutos de leitura

A Web scraping é a arte de extrair dados da Internet. Quando se trata de suas aplicações, há uma grande quantidade de aplicativos. Uma delas é a comparação de preços de diferentes sites. As compras on-line se tornaram o boom do setor atualmente, e comparar os preços de determinados produtos se tornou uma necessidade. Nós

A Web scraping é a arte de extrair dados da Internet. Quando se trata de suas aplicações, há uma grande quantidade de aplicativos. Uma delas é a comparação de preços de diferentes sites. As compras on-line se tornaram o boom do setor atualmente, e comparar os preços de determinados produtos se tornou uma necessidade. Todos nós visitamos vários sites quando precisamos comprar um determinado produto, mas você já pensou em criar uma ferramenta de comparação de preços que faça o mesmo trabalho para você e coloque a melhor oferta à sua frente?  

Neste artigo, criaremos um incrível site scraping para a ferramenta de comparação de preços em Python que permitirá que você acompanhe o preço dos produtos em diferentes fontes e o informará sobre o desempenho de diferentes concorrentes no mercado. Além disso, ela também informará à empresa se o preço de um produto específico aumenta ou diminui em relação ao preço previsto.

A fonte de dados que usaremos para este artigo será um arquivo JSON e compararemos os preços dos produtos que estamos obtendo da Amazon, eBay e Walmart. Nossos dados de amostra são os seguintes,

Fique à vontade para acessar qualquer seção para saber mais sobre a Web scraping para comparação de preços em python!

Índice

Etapas envolvidas na Web Scraping 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 script que estamos escrevendo são amazon_price, ebay_price e walmart_price.

Agora já vimos nossos dados. Então, vamos entrar na fase de desenvolvimento.

Criaremos a ferramenta em Python 3.x e, em primeiro lugar, usaremos a biblioteca JSON para analisar o JSON e processá-lo posteriormente. A ferramenta oferece uma funcionalidade incrível ao imprimir o nome do produto e o preço do site. Estamos importando a biblioteca JSON para analisar o JSON.

importar json

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

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

Agora que nossos dados JSON foram lidos, nós os converteremos em estruturas de dados integradas do Python, para as quais o código chamará o método json.loads() para converter a string JSON em um dicionário ou em uma lista de dicionários, dependendo das entradas.

Como o objetivo principal é encontrar a loja que vende o produto pelo menor preço, nossa meta é encontrar o preço mínimo e outros detalhes relevantes, como o nome do produto e da loja. As informações de preço da loja relevante são armazenadas nas chaves amazon_price, ebay_price e Walmart_price. Para encontrar o mínimo de cada produto, precisamos 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 usando lambdas e definindo a chave de min() para garantir que o campo de preço esteja sendo comparado. Isso 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 = []

Ele fornecerá o seguinte resultado:

Parabéns! Criamos com sucesso o script que você pode executar periodicamente para obter os preços atualizados do produto.

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

ProxyScrape é um dos mais populares e confiáveis provedores on-line de proxy . Os três serviços proxy incluem servidores dedicados de data center proxy , servidores residenciais proxy e servidores premium proxy . Então, qual é a melhor solução possível para o melhor HTTP proxy para a Web scraping para comparação de preços usando python? Antes de responder a essa pergunta, é melhor ver os recursos de cada servidor proxy .

Um datacenter dedicado proxy é mais adequado para tarefas on-line 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. Esse é um dos principais motivos pelos quais as organizações escolhem o proxies dedicado para transmitir grandes quantidades de dados em um curto espaço de tempo.

Um datacenter dedicado proxy tem vários recursos, como largura de banda ilimitada e conexões simultâneas, HTTP proxies dedicado para facilitar a comunicação e autenticação de IP para maior segurança. Com 99,9% de tempo de atividade, você pode ter certeza de que o data center dedicado sempre funcionará durante qualquer sessão. Por último, mas não menos importante, o ProxyScrape oferece excelente atendimento ao cliente e o ajudará a resolver seu problema dentro de 24 a 48 horas úteis. 

O próximo é um proxy residencial. Residencial é o proxy preferido de todos os consumidores em geral. O principal motivo é que o endereço IP de um proxy residencial se assemelha ao endereço IP fornecido pelo ISP. Isso significa que obter permissão do servidor de destino para acessar seus dados será mais fácil do que o normal. 

O outro recurso do proxy residencial do ProxyScrapeé um recurso rotativo. Um proxy rotativo ajuda a evitar um banimento permanente da sua conta porque o proxy residencial muda dinamicamente o seu endereço IP, dificultando que o servidor de destino verifique se você está usando um proxy ou não. 

Além disso, os outros recursos de um proxy residencial são: largura de banda ilimitada, juntamente com conexão simultânea, HTTP/s dedicado proxies, proxies em qualquer sessão de tempo devido aos mais de 7 milhões de proxies no pool proxy , autenticação de nome de usuário e senha para maior segurança e, por último, mas não menos importante, a capacidade de alterar o servidor do país. Você pode selecionar o servidor desejado anexando o código do país à autenticação do nome de usuário. 

O último é o proxy premium. O Premium proxies é igual ao datacenter dedicado proxies. A funcionalidade permanece a mesma. A principal diferença é a acessibilidade. No proxies premium, a lista proxy (a lista que contém o proxies) é disponibilizada para todos os usuários da rede ProxyScrape. É por isso que o proxies premium custa menos que o datacenter dedicado proxies.

Então, qual é a melhor solução possível para o melhor HTTP proxy para a Web scraping para comparação de preços usando python? A resposta seria " proxy residencial". O motivo é simples. Como dito acima, o proxy residencial é um proxy rotativo, o que significa que seu endereço IP será alterado dinamicamente durante um período de tempo, o que pode ser útil para enganar o servidor enviando muitas solicitações em um pequeno intervalo de tempo sem receber um bloqueio 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 de IP ou da autenticação de nome de usuário e senha. 

Leituras sugeridas:

Scrape Comentários do YouTube - 5 passos simplesAs 8 melhores ferramentas Python Web Scraping em 2023Web Scraping para artigos de notícias usando Python - a melhor maneira em 2023

Perguntas frequentes:

1. O que é preço scraping?
Preço scraping, como o nome sugere, é o processo de extrair o preço de um produto ou serviço on-line para realizar qualquer análise, como a análise da concorrência, para aprimorar a estratégia de marketing. Automatizar o processo de scraping pode ajudá-lo a reduzir o tempo e os recursos, e você pode fazer isso com a ajuda do python.
2. Qual é a melhor proxy para a Web scraping para comparação de preços?
O melhor proxy para executar o scraping da Web para comparação de preços é um " proxy residencial". O motivo é que o proxy residencial é um proxy rotativo, o que significa que seu endereço IP será alterado dinamicamente durante um período de tempo, o que pode ser útil para enganar o servidor enviando muitas solicitações em um pequeno intervalo de tempo sem receber um bloqueio de IP.
3. O site scraping para comparação de preços é legal?
A resposta é sim. Você pode scrape o preço de um site de comércio eletrônico, pois 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

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.