Como a extração de dados do eBay ajudará a sua loja online
O eBay é o segundo maior site de comércio eletrónico dos EUA, cobrindo 19,7% do mercado. Com 182 milhões de utilizadores ativos, o eBay é um dos melhores sites que podemos usar para análise de preços.
Para este exemplo, iremos extrair apenas o preço do produto, mas o eBay é um tesouro de dados. Pode sempre extrair a secção de avaliações, extrair palavras-chave negativas, fazer uma análise de sentimento e determinar por que razão os clientes estão insatisfeitos com o produto que compraram.
Também pode extrair a secção «As pessoas que viram este artigo também viram» para descobrir o que os clientes querem. Pode usar esta informação para adicionar novos produtos à sua loja ou criar pacotes com desconto que incluam mais produtos. As pessoas vão adorar!
Como extrair dados do eBay com a WebScrapingAPI
Um dos maiores obstáculos no web scraping é evitar ser bloqueado pelo site em que está interessado. Felizmente, não precisa de se preocupar com isso quando tem a ferramenta certa. Neste caso, a WebScrapingAPI é a melhor solução por três razões simples:
- Oferecemos 1.000 pedidos por mês com o pacote gratuito, sem necessidade de cartão de crédito.
- A API tem um conjunto de proxies com mais de 100 milhões de IPs rotativos, garantindo que não haja sobreposição de pedidos.
- Pode integrar a API deles com uma única linha de código.
Pode perguntar-se por que razão usamos uma API de scraping em vez de criarmos a nossa própria. A razão é muito simples: criar uma ferramenta de scraping do zero pode demorar algumas semanas.
O maior problema não é criar a ferramenta em si, mas sim ajustá-la para que os sites não a identifiquem como um bot.
Chave de acesso à API e autenticação
Aceda ao site da WebScrapingAPI e crie uma conta. Receberá uma chave de API e 1000 pedidos gratuitos.
Instale as dependências
O nosso projeto pessoal é leve e requer apenas duas dependências: axios e cheerio. O Axios é um cliente HTTP baseado em promessas para Node.JS. Utilizamos esta biblioteca para chamar a WebScrapingAPI. A segunda biblioteca, cheerio, é uma implementação enxuta do jQuery para o servidor, e utilizamo-la para analisar a página do produto. Utilize este comando para instalar as dependências:
npm install axios cheerioInicie o projeto
Crie um ficheiro index.js e cole o seguinte código nele:
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, usamos uma função recursiva com um tempo limite para extrair a página do produto a cada hora e verificar se houve alguma alteração de preço.
Extrair a(s) página(s)
Substitua // Scrape the document por 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 rastrear a página de produtos do eBay e converte os resultados numa instância cheerio.
Inspecione o código-fonte
Raspámos toda a página do produto, mas precisamos apenas do preço do produto. Podemos usar a instância cheerio para obter o valor do preço. O seletor para o preço do produto é #mainContent [itemprop="price"].
Analise o HTML
Substitua // Analise o documento com o seguinte código:
let price = $('#mainContent [itemprop="price"]').html()Processar os resultados
O preço vem neste formato: SÍMBOLO DA MOEDA VALOR. Precisamos de extrair apenas o valor. Substitua // Processar os resultados por 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 realizando as seguintes ações:
- Remover a moeda (US)
- Remover o símbolo da moeda ($)
- Remover quaisquer espaços em branco ( )
- Remover as vírgulas do número
- Remover as casas decimais
Assim que o preço for analisado, registamos o custo inicial ou o novo preço, caso tenha mudado entre as sessões de scraping.
Conclusão
Com algumas linhas de código e uma ferramenta fantástica como a WebScrapingAPI, conseguimos criar um script que obtém o preço de qualquer produto no 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
- Extrair vários produtos e comparar os preços
- Extrair dados de outro site do eBay (como ebay.de ou ebay.ca) e comparar o preço do mesmo produto
- Inverter a situação e extrair a página do produto da Amazon e fazer uma comparação de preços entre os dois sites para o mesmo produto
- Implementar notificações por e-mail; deve usar o nodemailer para o fazer
- Implementar notificações no Slack; pode usar esta biblioteca para concluir a tarefa
A melhor parte desta solução aplicada a um caso de uso real é que pode fazer tudo isto sem gastar dinheiro nem tempo precioso. Isto porque a WebScrapingAPI tem um período de teste gratuito de duas semanas que lhe permite usar todas as suas funcionalidades de graça!




