Voltar ao blogue
Guias
Gabriel Cioci10 de agosto de 20215 min de leitura

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

Como recolher páginas do eBay para obter informações sobre preç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:

  • Oferecemos 1.000 pedidos por mês com o pacote gratuito, sem necessidade de cartão.
  • 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.
  • 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:

  • Extrair o título do produto para facilitar a classificação de preços
  • Procurar vários produtos e comparar o preço
  • Recolha de outro sítio Web do eBay (como ebay.de ou ebay.ca) e compare o preço do mesmo produto
  • 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
  • Implementar notificações por correio eletrónico; deve utilizar o nodemailer para o fazer
  • 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!

Sobre o autor
Gabriel Cioci, Desenvolvedor Full-Stack na WebScrapingAPI
Gabriel CiociDesenvolvedor Full-Stack

Gabriel Cioci é um programador Full Stack na WebScrapingAPI, responsável pela criação e manutenção dos sites, do painel do utilizador e das principais funcionalidades da plataforma destinadas aos utilizadores.

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.