Saltar para o conteúdo
Comece grátis
Voltar ao blogue

Web scraping para estudos de mercado: um guia para programadores

Sergiu InizianÚltima atualização em 16 min read
Web scraping para estudos de mercado: um guia para programadores
Resumo: A extração de dados da Web pode transformar páginas públicas de produtos em observações repetíveis sobre preços, gama de produtos e disponibilidade. Uma investigação de mercado útil requer uma amostra definida, produtos comparáveis, registos de data e hora e verificações de qualidade; as listagens extraídas, por si só, não revelam vendas, procura ou quota de mercado.

O web scraping para investigação de mercado consiste na recolha automatizada de dados de sites para responder a uma questão definida sobre um mercado ou os seus participantes. Para os programadores, o resultado final é um conjunto de dados com observações rastreáveis e limites claros, e não simplesmente uma grande coleção de páginas.

Considere um retalhista que compara os seus preços com as ofertas públicas da concorrência. Um painel de controlo pode mostrar que o preço médio de outro retalhista baixou esta semana. Isso pode refletir reduções de preço genuínas, produtos mais baratos recém-listados, a ausência de produtos caros ou um analisador que começou a ler preços a prestações. Cada explicação leva a uma decisão empresarial diferente.

Uma investigação fiável distingue essas possibilidades antes de apresentar uma tendência. É necessário saber o que a amostra abrange, o que cada registo representa e quais as diferenças que se consideram comparáveis. Uma página de produto é uma evidência de uma oferta anunciada em condições específicas, não uma prova de uma transação concluída.

Este guia centra-se na pesquisa de produtos e preços da concorrência, porque expõe claramente os problemas de medição. Irá definir a questão de investigação, conceber um esquema de observação, normalizar os preços sem perder o contexto e validar a recolha de dados antes de apresentar os resultados. A mesma disciplina aplica-se a diretórios de serviços, listas de ofertas de emprego e outros sinais do mercado público.

Comece a extrair dados da Web para investigação de mercado com uma questão que possa ser respondida

«Monitorizar os concorrentes» é uma expressão demasiado abrangente para se transformar numa especificação de extração. Substitua-a por uma pergunta como: «Como se comparam os preços anunciados com entrega incluída para produtos correspondentes entre estes retalhistas para este destino?» Essa frase identifica as entidades, a métrica e as condições importantes antes de selecionar uma biblioteca de scraping.

Separe as observações das interpretações nos requisitos. Pode observar um preço apresentado, um produto listado ou uma mensagem de disponibilidade. Pode utilizar essas observações para investigar uma alteração na concorrência, mas afirmações mais fortes exigem provas adicionais. O facto de um produto desaparecer de uma página não é suficiente para concluir que esgotou ou foi descontinuado.

Questão de investigação

Campos observados úteis

O que esses campos não estabelecem

Em que diferem as ofertas comparáveis?

Identidade do produto, preço, moeda, condições de envio

Preço real da transação para cada cliente

Que categorias estão listadas?

ID do produto, categorias, vendedor, data de observação

Volume de vendas ou quota de mercado

Como é que a disponibilidade varia?

Texto de disponibilidade e estado de observação bem-sucedida

Unidades vendidas ou stock em armazém

Como é que as promoções variam?

Texto da promoção pública, elegibilidade, datas de validade

Eficácia da promoção ou adesão dos clientes

Como evolui o sortido?

Primeira e última datas observadas, atributos do produto

Datas definitivas de lançamento ou descontinuação

Isto não é apenas uma formulação cautelosa. O Gabinete Nacional de Estatísticas do Reino Unido documentou uma limitação fundamental da investigação de preços obtidos por scraping: os preços listados não fornecem as quantidades adquiridas necessárias para a ponderação das despesas. A sua investigação de 2017 sobre dados de preços obtidos por scraping na Web constitui um enquadramento metodológico, não uma descrição do mercado retalhista atual.

Escreva a decisão pretendida ao lado da pergunta. Uma equipa de merchandising que compara o sortido necessita de um conjunto de dados diferente do de um analista que mede variações de preços correspondentes. Evite recolher campos adicionais, pois são fáceis de extrair se ninguém conseguir explicar como estes apoiam a decisão.

Conceba uma amostra que exponha os seus pontos cegos

A sua lista de fontes define o mercado que pode efetivamente observar. Uma recolha completa de três sites continua a ser uma amostra do mercado mais vasto. Exclui outros retalhistas, transações offline e ofertas ocultas por condições fora do âmbito da sua recolha. Mais páginas das mesmas fontes não podem colmatar essas omissões.

Crie um registo de fontes antes da recolha. Registe os retalhistas ou plataformas escolhidos, a geografia, as categorias, o método de acesso, o responsável pela revisão e os motivos para a inclusão. Distinga as fontes deliberadamente excluídas das fontes que falharam por motivos técnicos. Caso contrário, uma falha no pipeline pode alterar silenciosamente o mercado aparente que está a ser estudado.

Mantenha a cobertura separada do sucesso da extração

Avalie a cobertura em relação a um quadro explícito sempre que possível: a lista de retalhistas aprovados, URLs de categorias conhecidas ou um painel de produtos de referência. Uma taxa de resposta bem-sucedida mede a recuperação, não a cobertura. O rastreador pode recuperar todas as URLs solicitadas, mas falhar na descoberta de uma categoria inteira porque um link de navegação foi alterado.

Acompanhe separadamente os produtos descobertos, as páginas solicitadas, as observações bem-sucedidas e os registos válidos. Registe o motivo de cada perda. Um produto indisponível, um preço em falta, um pedido falhado e um identificador sem correspondência não devem ser todos agrupados numa linha vazia. Estas distinções são essenciais para explicar alterações na amostra final.

Se não for possível estimar a cobertura total, indique o que sabe. «Ofertas observadas a partir de páginas de categorias públicas selecionadas» é uma descrição defensável. «Todo o mercado» não o é. Documente as regras de descoberta para que outro programador possa reproduzir os limites do conjunto de dados.

Utilize um painel estável e um fluxo de descoberta

Um design prático mantém um painel de produtos fixo para comparações, ao mesmo tempo que executa tarefas de descoberta separadas para novos anúncios. O painel ajuda a comparar itens semelhantes ao longo do tempo; a descoberta revela alterações no sortido que, de outra forma, o painel não detectaria. Publique as respetivas contagens separadamente, pois respondem a questões diferentes.

Revise o painel periodicamente, em vez de substituir discretamente os produtos em falta. A rotatividade de produtos pode alterar uma série de preços, mesmo quando os preços individuais são recolhidos corretamente. O ONS explorou esta questão numa investigação sobre dados de vestuário recolhidos da Web. A implicação para a engenharia é preservar as decisões de entrada, saída e correspondência juntamente com as observações.

Armazene as ofertas como observações com data e hora

Utilize conceitos distintos para um produto, uma oferta e uma observação. O produto é o artigo que está a ser vendido. A oferta acrescenta o vendedor e as condições comerciais. A observação regista o que o seu coletor viu num determinado momento e num contexto específico.

O Schema.org Product e o Schema.org Offer fornecem um vocabulário útil para esta separação, incluindo identificadores de produto e propriedades da oferta, tais como preço, moeda e disponibilidade. Os dados estruturados de um site podem ser uma fonte de extração conveniente, mas não se deve assumir que correspondem ao conteúdo visível ou que identificam corretamente a variante selecionada. Valide páginas representativas antes de confiar neles.

Grupo de campos

Campos sugeridos

Por que é importante

Proveniência

URL de origem, hora de observação, ID da execução, versão do analisador

Reproduzir e auditar uma observação

Identidade do produto

ID do produto de origem, GTIN (quando fornecido), marca, modelo, variante

Comparar o semelhante com o semelhante

Contexto da oferta

Vendedor, região, moeda, estado, elegibilidade

Evitar comparar ofertas incompatíveis

Base de preço

Valor anunciado, valor ou estado dos portes de envio, base tributária

Explique o que o preço inclui

Resultado da recolha

Estado da recolha, estado da extração, motivos de campos em falta

Distinguir valores desconhecidos de alterações reais

Conserve o texto original do campo juntamente com os valores normalizados, quando a sua política de retenção aprovada o permitir. «A partir de 19,99», «19,99 por mês» e «19,99» podem ser normalizados para o mesmo número, embora descrevam ofertas diferentes. Manter a evidência original ajuda a investigar esse erro sem partir do princípio de que a página continuará com o mesmo aspeto mais tarde.

Utilize carimbos de data e hora de observação que tenham em conta o fuso horário e defina como é atribuído um dia de relatório. Um preço recolhido pouco antes da meia-noite numa região e após a meia-noite noutra pode ser incluído em resumos diários diferentes. Preserve o momento exato da recolha, mesmo que o painel de controlo apresente datas locais.

Trate as correções como alterações rastreáveis. Se um analisador tiver mapeado os custos de envio para o campo do preço, um conjunto de dados corrigido deve registar as execuções afetadas e a versão da transformação. Sobrescrever silenciosamente as observações históricas torna difícil explicar por que razão o gráfico publicado na semana passada mudou.

Correlacione os produtos antes de comparar os seus preços

Uma correspondência atraente no título não é suficiente para estabelecer a equivalência entre produtos. Compare o modelo, a variante, a quantidade da embalagem, o estado e o contexto do vendedor antes de tratar duas ofertas como alternativas. Uma unidade recondicionada, uma unidade nova e um multipack podem partilhar a maioria das palavras visíveis, embora representem compras diferentes.

Utilize identificadores fiáveis quando estiverem disponíveis. A GS1 descreve os GTINs como chaves de identidade do produto na sua explicação sobre GTINs e códigos de barras. Preserve os identificadores como cadeias de caracteres, incluindo zeros à esquerda, e verifique se o site associa o identificador à variante relevante. A presença de um identificador não elimina a necessidade de validar a associação extraída.

Quando os identificadores estiverem ausentes, utilize um processo de correspondência em etapas. Normalize diferenças óbvias de formatação, restrinja as opções por marca e categoria e, em seguida, compare os atributos do modelo e da variante. Armazene um estado de correspondência, como «confirmado», «provisório» ou «rejeitado». Encaminhe as correspondências incertas para revisão, em vez de transformar silenciosamente uma pontuação de semelhança imprecisa numa equivalência factual.

Normalize unidades e condições comerciais

O preço unitário pode tornar os tamanhos das embalagens comparáveis, mas apenas depois de se estabelecer que a unidade significa a mesma coisa. Comparar o preço por quilograma pode ser útil para produtos embalados equivalentes. No entanto, isso não torna os produtos idênticos quando a concentração, a qualidade ou os acessórios incluídos diferem. Mantenha a informação original da embalagem para que os analistas possam escolher a comparação adequada.

Não agrupe moedas numa única coluna numérica para calcular uma média. Mantenha as moedas originais e, se for necessária uma conversão, registe a fonte da taxa de câmbio, a data e hora e a política de conversão. O montante convertido é uma medida derivada e não a observação original.

Os custos de envio, impostos, adesão e requisitos mínimos de carrinho de compras requerem um tratamento igualmente explícito. Um envio com custo desconhecido não é um envio gratuito. Um preço exclusivo para membros não é um preço público para todos os clientes. Compare um cenário comum elegível ou separe os grupos, para que o painel de controlo não classifique ofertas diferentes como substitutos diretos.

Valide totais comparáveis com uma pequena função Python

Realize verificações de comparabilidade antes da agregação. O exemplo seguinte, da biblioteca padrão, aceita campos já extraídos e calcula um total final apenas quando ambas as ofertas partilham o mesmo produto e a mesma base comercial. Rejeita deliberadamente os custos de envio desconhecidos, em vez de os tratar como zero.

Trata-se de um passo de validação ilustrativo, não de um comparador universal de produtos nem de um scraper em tempo real. As suas entradas pressupõem que já tenha resolvido a identidade, selecionado a oferta relevante e normalizado o texto numérico. Utilize as suas regras específicas da fonte para a validação da moeda, o tratamento fiscal e a elegibilidade.

from decimal import Decimal, InvalidOperation

def amount(value):
    if not isinstance(value, str):
        raise ValueError("Amounts must be normalized decimal strings")
    try:
        parsed = Decimal(value)
    except InvalidOperation as exc:
        raise ValueError("Invalid amount") from exc
    if not parsed.is_finite() or parsed < 0:
        raise ValueError("Amount must be finite and nonnegative")
    return parsed

def delivered_total(offer, expected_basis):
    for field, expected in expected_basis.items():
        if offer.get(field) != expected:
            raise ValueError(f"Incomparable field: {field}")
    if offer.get("shipping_status") != "known":
        raise ValueError("Shipping is unknown")
    return amount(offer.get("price")) + amount(offer.get("shipping"))

basis = {
    "matched_product_id": "widget-blue-small-single",
    "currency": "EUR",
    "condition": "new",
    "tax_basis": "included",
    "destination": "DE",
    "eligibility": "public",
}
offer = {
    **basis,
    "price": "24.90",
    "shipping": "3.50",
    "shipping_status": "known",
}
print(delivered_total(offer, basis))  # 28.40

A documentação sobre números decimais do Python explica a aritmética decimal e por que razão a construção de decimais a partir de cadeias de caracteres difere da sua construção a partir de valores binários de ponto flutuante. Aqui, a entrada de cadeia de caracteres é intencional. A função também rejeita valores não finitos, uma vez que um valor como NaN não deve constar num relatório de preços.

Amplie os casos de teste antes de ligar esta etapa aos dados de produção. Inclua portes de envio desconhecidos, moedas incompatíveis, montantes negativos, ofertas indisponíveis e observações duplicadas. Mantenha os registos rejeitados com o respetivo motivo num fluxo de revisão. Eliminá-los silenciosamente melhoraria a aparência de limpeza do conjunto de dados, ao mesmo tempo que ocultaria a perda de cobertura.

Para a camada de recolha que fornece estes campos, comece com o método de recuperação mais simples que exponha o conteúdo necessário. O guia sobre clientes HTTP em Python aborda essa escolha; o tutorial sobre análise de preços do eBay apresenta um exemplo específico da plataforma que pode ser adaptado após analisar os seus requisitos de origem.

Recolha instantâneos repetíveis e detete alterações no pipeline

Escolha um calendário que se adapte à questão de investigação e à política de pedidos permitida. As observações frequentes só são úteis se os detalhes adicionados alterarem a análise. Um relatório diário de sortido não requer automaticamente uma recuperação minuto a minuto, especialmente quando isso aumenta os custos e complica as verificações de qualidade.

Registe o contexto da recolha de forma consistente: região, idioma, destino, variante selecionada e quaisquer condições relevantes da oferta pública. Se esse contexto se alterar, assinale a quebra na série. Caso contrário, uma alteração de localização pode parecer uma alteração de preço competitiva.

Crie um pequeno conjunto de testes revistos que abranjam páginas comuns e casos problemáticos. Teste os analisadores em relação a esses testes quando os seletores ou as dependências mudarem. As verificações em tempo real confirmam então que a estrutura da página e os valores apresentados continuam a corresponder às suas premissas. Uma resposta HTTP bem-sucedida nunca deve ser a única condição de aceitação.

Monitorize as taxas de campos em falta, alterações inesperadas no número de registos, IDs duplicados e variações de preço invulgarmente grandes. Estas verificações devem desencadear uma investigação, e não a eliminação automática de valores surpreendentes. Promoções reais e erros de extração podem parecer semelhantes num gráfico. Compare as evidências retidas, as alterações recentes nos analisadores e as observações adjacentes antes de decidir qual a explicação mais adequada.

Mantenha os resultados das tentativas de repetição separados das tentativas originais e utilize chaves de observação estáveis, para que uma nova tentativa de entrega não crie uma segunda observação do produto. Para uma discussão mais abrangente sobre a implementação, o guia de recolha do Scrapy fornece contexto sobre o rastreio.

Analise os acessos permitidos, os termos do site e o âmbito da recolha antes de executar a tarefa. Mantenha o conjunto de dados focado na questão empresarial e minimize dados pessoais desnecessários. Siga uma política de pedidos delimitada e encaminhe condições de acesso incertas para revisão. Um serviço de recuperação alojado altera quem opera a camada de rede, não o que o seu projeto de investigação tem direito a recolher.

Relate as variações de preços sem inventar quotas de mercado

Um relatório útil reflete as suas regras de medição nos resultados. Apresente o painel de fontes, a janela de observação, a contagem de registos válidos, os produtos sem correspondência e as fontes em falta ao lado do gráfico principal. Os analistas não devem ter de inspecionar um registo do pipeline para descobrir que um retalhista desapareceu da amostra.

Para comparações de preços, identifique a coorte correspondente e as condições em que os totais são comparáveis. Se apresentar uma variação percentual, indique se esta compara os mesmos produtos em ambos os períodos ou sortidos semanais diferentes. Essas medidas respondem a questões diferentes, mesmo quando os seus gráficos parecem idênticos.

Separe os resumos descritivos de um índice de preços formal. Uma mediana do preço observado ou uma variação de produtos correspondentes pode ser útil para investigação interna, mas não cumpre automaticamente os requisitos metodológicos de uma medida de inflação. Evite designar uma média simples como «inflação de mercado» ou apresentá-la como representativa das despesas dos consumidores.

Da mesma forma, as contagens de listagens são medidas do sortido observado, não da quota de mercado. Um retalhista com mais páginas indexadas pode ter uma paginação diferente, mais variantes ou ofertas duplicadas no mercado. A quota de receitas requer evidências adequadas de vendas e da dimensão do mercado para além deste conjunto de dados. Mantenha a formulação do relatório fiel ao que a recolha de dados efetivamente estabelece.

Termine cada relatório com as questões que os dados suscitam, em vez de explicações sem fundamento. Uma quota crescente de listagens promocionais pode justificar a investigação de uma campanha. Isso não prova que um concorrente esteja sob pressão financeira. Uma boa recolha de dados da Web para investigação de mercado torna essas decisões de acompanhamento mais precisas, preservando simultaneamente a distinção entre evidência e interpretação.

Se as conclusões se vão tornar conteúdo publicado, o nosso guia sobre web scraping para marketing de conteúdos explica como transformar observações em investigação original sem exagerar o que mostram.

Pontos-chave

  • Defina uma questão de investigação à qual as observações públicas possam responder e, em seguida, documente as evidências em falta.
  • Preserve a identidade do produto, as condições da oferta, o contexto da recolha e os registos de data e hora antes de calcular comparações.
  • Acompanhe a cobertura da amostra separadamente das solicitações bem-sucedidas e dos registos extraídos válidos.
  • Valide a correspondência, a moeda, as unidades, os impostos e os portes de envio antes de classificar os preços.
  • Identifique com precisão o sortido e as medidas de preço; as listagens recolhidas não determinam vendas nem quota de mercado.

Perguntas frequentes

É possível adicionar avaliações de clientes ao conjunto de dados da pesquisa?

Sim, mas trate-as como uma fonte de evidência separada, com os seus próprios limites de amostragem. Os avaliadores não são necessariamente representativos de todos os compradores e o texto pode conter informações pessoais. Defina o âmbito de recolha permitido, minimize identificadores desnecessários e indique a plataforma e o período de observação. As classificações de sentimento são avaliações derivadas, pelo que deve indicar o método e a incerteza, em vez de as apresentar como factos diretos dos clientes.

Como devem os resultados da investigação ser partilhados com outra equipa?

Forneça um dicionário de dados, o âmbito das fontes, carimbos de data/hora e as limitações conhecidas juntamente com os registos. Inclua as regras para valores em falta, correspondência de produtos e quaisquer campos derivados, para que outro analista possa reproduzir o resultado. Uma exportação com versão é mais fácil de auditar do que uma folha de cálculo cujos valores mudam sem aviso prévio. Indique claramente quem é o responsável para questões sobre interpretação ou correções.

A IA consegue classificar produtos em categorias de investigação?

Sim, mas avalie os seus rótulos em relação a uma amostra revista antes de os utilizar em agregados. Mantenha a definição da categoria, a versão do modelo ou da regra e as atribuições incertas disponíveis para inspeção. Uma alteração na classificação pode deslocar produtos entre grupos e alterar as tendências relatadas, mesmo quando os dados de origem permanecem inalterados. Utilize um processo de revisão separado para categorias novas ou ambíguas.

Conclusão

A recolha de dados da Web para estudos de mercado funciona melhor quando se concebe a medição antes do coletor. Defina a questão, escolha um painel de fontes defensável e preserve a distinção entre produtos, ofertas e observações. Valide a comparabilidade antes de calcular uma diferença de preço e exponha a cobertura em falta, em vez de a esconder dentro de um gráfico apelativo.

Comece com uma categoria e um pequeno painel revisto. Confirme se os registos podem responder à pergunta pretendida, execute a recolha através de observações repetidas e investigue as falhas antes de expandir a lista de fontes. Escalar um esquema ambíguo apenas produz um conjunto de dados ambíguo ainda maior.

Se a recuperação de páginas estiver a desviar a atenção deste trabalho analítico, avalie a API Scraper da WebScrapingAPI como componente de recuperação, mantendo explícitas as suas definições de investigação e regras de validação. O valor do pipeline finalizado não reside na quantidade de dados que recolhe. Reside sim na capacidade de outro programador ou analista inspecionar um resultado, compreender as suas limitações e tomar uma decisão fundamentada com base nas evidências.

Sobre o autor

Sergiu Inizian, Redator de conteúdos técnicos @ WebScrapingAPI

Sergiu Inizian

Redator de conteúdos técnicos

Sergiu Inizian é redator de conteúdos técnicos na WebScrapingAPI, criando conteúdos claros e práticos que ajudam os programadores a compreender o produto e a utilizá-lo de forma eficaz.

Recolha alternativa de dados para o sector financeiro: Como os dados da Web dão aos investidores uma vantagem
Casos de utilização

Recolha alternativa de dados para o sector financeiro: Como os dados da Web dão aos investidores uma vantagem

TL;DR: A recolha de dados alternativos utiliza técnicas de recolha na Web para reunir conjuntos de dados não tradicionais (preços de produtos, sentimentos, anúncios de emprego, registos regulamentares) que revelam sinais de mercado antes de aparecerem nos relatórios de ganhos. Este guia orienta-o através das fontes de dados de maior valor, como criar condutas de nível financeiro, validação da qualidade dos dados e as protecções de conformidade necessárias para se manter do lado certo da lei.

Mihnea-Octavian Manolache19 min read
Ler artigo
O que são dados financeiros? Tipos, métodos de recolha e ferramentas de análise
Casos de utilização

O que são dados financeiros? Tipos, métodos de recolha e ferramentas de análise

TL;DR: Os dados financeiros são a coleção de registos quantitativos (receitas, despesas, activos, passivos, fluxo de caixa) que as organizações e os indivíduos utilizam para tomar decisões económicas informadas. Este guia analisa as quatro principais demonstrações financeiras, compara as fontes de dados tradicionais e alternativas, apresenta métodos de recolha modernos e abrange as ferramentas em que os profissionais confiam para a análise.

Suciu Dan15 min read
Ler artigo
Selectores XPath vs CSS: Escolher o correto
Casos de utilização

Selectores XPath vs CSS: Escolher o correto

TL;DR: Os selectores XPath e CSS localizam ambos elementos DOM, mas resolvem problemas diferentes. Os selectores CSS são mais rápidos e mais legíveis para selecções simples. O XPath ganha quando é necessário percorrer o DOM em qualquer direção, fazer corresponder conteúdo de texto ou lidar com lógica condicional complexa. A maioria dos projectos de produção beneficia da utilização de ambos estrategicamente.

Mihai Maxim14 min read
Ler artigo

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.