Como recolher páginas do eBay para obter informações sobre preços

Gabriel Cioci em 10 de agosto de 2021

Deixe-me pintar um quadro para si. Acabou de lançar a sua loja online de cartuchos de jogos de vídeo retro raros e não sabe bem como lidar com o preço dos produtos.

A fixação do preço de um produto é sempre um desafio: se o preço for demasiado baixo, a margem de lucro é reduzida. Se o preço for demasiado elevado, os clientes não estarão interessados no produto e comprá-lo-ão a um concorrente.

Decisões, decisões. O que é que podemos fazer? Perante este problema, há duas soluções:

  1. Passar horas todos os dias a pesquisar os preços dos concorrentes
  2. Seja esperto e crie um script automático que faça esta tarefa mundana por si automaticamente

Consegue adivinhar qual a opção que vamos escolher para este artigo? Porque tempo é dinheiro e eu gosto de facilitar a minha vida sempre que posso, vamos escolher a segunda opção.

Se a primeira opção lhe parece mais divertida, mais vale ler este artigo na mesma. É evidente que tem demasiado tempo livre nas suas mãos.

Como é que a recolha de dados do eBay pode ajudar a sua loja online

O eBay é o segundo maior sítio de comércio eletrónico em linha nos EUA, cobrindo 19,7% do mercado. Com 182 milhões de utilizadores activos, o eBay é um dos melhores sítios que podemos utilizar para obter informações sobre preços.

Para este exemplo, só vamos recolher o preço do produto, mas o eBay é um tesouro de dados. Pode sempre consultar a secção de críticas, extrair palavras-chave negativas, fazer uma análise de sentimentos e determinar por que razão os clientes estão insatisfeitos com o produto que compraram.

Também pode consultar a secção As pessoas que viram este artigo também viram para saber o que os clientes pretendem. Pode utilizar esta informação para adicionar novos produtos à sua loja ou criar pacotes de descontos com mais produtos. As pessoas vão adorá-los!

Como recolher informação sobre o eBay com a WebScrapingAPI

Um dos maiores obstáculos na recolha de dados da Web é evitar um bloqueio do sítio Web em que está interessado. Felizmente, não precisa de se preocupar com isso quando tem a ferramenta certa. Neste caso, o WebScrapingAPI é a melhor solução por três simples razões:

  1. Oferecemos 1.000 pedidos por mês com o pacote gratuito, sem necessidade de cartão.
  2. A API tem um pool de proxy de mais de 100 milhões de IPs rotativos, garantindo que não haja sobreposição de pedidos.
  3. Pode integrar-se na sua API com uma única linha de código.

Poderá perguntar-se por que razão utilizamos uma API de recolha de dados em vez de construirmos a nossa própria API. A razão é muito simples: construir uma ferramenta de recolha de dados de raiz pode demorar algumas semanas.

O maior problema não é criar a ferramenta em si, mas sim aperfeiçoá-la, para que os sítios não a assinalem como um bot.

Chave de acesso e autenticação da API

Aceda ao sítio WebScrapingAPI e crie uma conta. Receberá uma chave de API e 1.000 pedidos gratuitamente.

Instalar as dependências

Nosso projeto de estimação é leve e requer apenas duas dependências: axios e cheerio. Axios é um cliente HTTP baseado em promessas para Node.JS. Usamos essa biblioteca para chamar a WebScrapingAPI. A segunda biblioteca, cheerio, é uma implementação enxuta do jQuery para o servidor, e nós a usamos para analisar a página do produto. Use este comando para instalar as dependências:

npm install axios cheerio

Arranque do projeto

Crie um ficheiro index.js e cole nele o seguinte 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 pode ver, utilizamos uma função recursiva com um tempo limite para procurar a página do produto de hora a hora e verificar qualquer alteração de preço.

Extrair a(s) página(s)

Substituir // Extrair o documento com 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 a WebScrapingAPI para recolher a página do produto eBay e converte os resultados numa instância do cheerio.

Inspecionar o código fonte

Recolhemos toda a página do produto, mas precisamos apenas do preço do produto. Podemos usar a instância do cheerio para obter o valor do preço. O seletor para o preço do produto é #mainContent [itemprop="price"].

Analisar o HTML

Substituir // Analisar o documento com o seguinte código:

let price = $('#mainContent [itemprop="price"]').html()

Processar os resultados

O preço apresenta-se neste formato: SÍMBOLO DA MOEDA MONTANTE. Precisamos de extrair apenas o montante. Substituir // Processa os resultados com 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 irá limpar o preço através das seguintes acções:

  • Remover a moeda (US)
  • Remover o símbolo de moeda ($)
  • Remover os espaços em branco ( )
  • Remover vírgulas do número
  • Remover as casas decimais

Assim que o preço é analisado, registamos o custo inicial ou o novo preço, se tiver sido alterado entre as sessões de recolha de dados.

Conclusão

Com algumas linhas de código e uma ferramenta fantástica como o WebScrapingAPI, conseguimos ter um script que vai buscar o preço de qualquer produto ao eBay. A partir daqui, o céu é o limite. Pode levar o script para o próximo nível e implementar as seguintes melhorias:

  1. Extrair o título do produto para facilitar a classificação de preços
  2. Procurar vários produtos e comparar o preço
  3. Recolha de outro sítio Web do eBay (como ebay.de ou ebay.ca) e compare o preço do mesmo produto
  4. Inverter a tabela e recolher a página de produto da Amazon e fazer uma comparação de preços entre os dois sítios para o mesmo produto
  5. Implementar notificações por correio eletrónico; deve utilizar o nodemailer para o fazer
  6. Implementar notificações do Slack; pode utilizar esta biblioteca para concluir a tarefa

A melhor parte desta solução aplicada a um caso de utilização real é que pode fazer tudo isto sem gastar dinheiro nem tempo precioso. Isto porque o WebScrapingAPI tem um teste gratuito de duas semanas que lhe permite utilizar todas as suas funcionalidades gratuitamente!

Notícias e actualizações

Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artigos relacionados

miniatura
Casos de utilizaçãoUtilização de Web Scraping para dados alternativos em finanças: Um guia completo para investidores

Explore o poder transformador da recolha de dados da Web no sector financeiro. Desde dados de produtos a análises de sentimentos, este guia oferece informações sobre os vários tipos de dados da Web disponíveis para decisões de investimento.

Mihnea-Octavian Manolache
avatar do autor
Mihnea-Octavian Manolache
13 min ler
miniatura
GuiasGuia de início rápido da API de raspagem da Web

Comece a utilizar o WebScrapingAPI, a derradeira solução de raspagem da Web! Recolha dados em tempo real, contorne sistemas anti-bot e beneficie de apoio profissional.

Mihnea-Octavian Manolache
avatar do autor
Mihnea-Octavian Manolache
9 min. de leitura
miniatura
Ciência da recolha de dados da WebWeb Scraping facilitado: a importância da análise de dados

Descubra como extrair e organizar eficientemente dados para raspagem da Web e análise de dados através de análise de dados, bibliotecas de análise de HTML e metadados schema.org.

Suciu Dan
avatar do autor
Suciu Dan
12 min ler