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

Web scraping para leads: como montar um pipeline B2B

Robert MunceanuÚltima atualização em 15 min read
Web scraping para leads: como montar um pipeline B2B
Resumo: o web scraping para geração de leads transforma sites de empresas e diretórios autorizados em dados de contas estruturados. Monte o pipeline em torno da identidade da empresa, das evidências de origem, da atualidade dos dados e da correspondência com o CRM. Trate a permissão para contatar alguém como uma decisão separada da coleta de um registro de empresa.

Web scraping para geração de leads é a coleta automatizada de informações de sites para descobrir e avaliar contas empresariais em potencial. Um resultado útil é um registro de empresa com domínio verificado, atributos de negócio relevantes e evidências que explicam por que ele pertence ao seu pipeline de vendas.

Pesquisa de mercado, análise da concorrência e monitoramento de marca estão, ao lado da geração de leads, entre os casos de uso de web scraping para empresas.

Pense em duas exportações. Uma contém milhares de nomes de empresas e uma coluna chamada “qualificado”. A outra contém menos contas, mas cada linha traz o site oficial, o serviço oferecido, quando esse fato foi observado e a fonte por trás da qualificação. Os desenvolvedores conseguem depurar a segunda exportação. A equipe de Sales Ops consegue revisá-la. Nenhuma das duas equipes precisa confiar em uma pontuação misteriosa.

Este guia busca o segundo resultado. Você vai definir a conta de que precisa, selecionar fontes, extrair um esquema propositalmente enxuto, normalizar identidades e entregar registros revisados a um CRM. Os exemplos se concentram em organizações e nas atividades de negócio que elas publicam, e não na coleta em massa de dados de contato pessoais. A mesma arquitetura funciona quer você comece por um diretório setorial autorizado, quer por uma lista de sites de empresas que já mantém.

As páginas de empresas no LinkedIn são uma dessas fontes, e nosso guia sobre como fazer scraping do LinkedIn com Python mostra quais campos de empresa estão acessíveis sem login.

Comece o web scraping para geração de leads com um contrato de conta

Antes de escolher um parser, escreva uma frase que defina uma conta útil. Por exemplo: “Prestadores independentes de manutenção industrial que atuam nas regiões que atendemos e oferecem explicitamente inspeção de equipamentos.” Essa é uma regra de segmentação ilustrativa, não uma afirmação sobre um mercado específico.

Cada parte deve corresponder a uma evidência observável. Uma página de serviços pode sustentar o critério de inspeção. Uma página de unidades pode sustentar a cobertura regional. Um slogan vago na página inicial não comprova nenhum dos dois. Se o seu negócio precisa de uma propriedade que as fontes disponíveis não divulgam, marque-a como desconhecida em vez de inventar uma estimativa.

Separe três perguntas que muitas vezes são espremidas em uma única pontuação de lead:

Pergunta

Resultado

Exemplo de evidência

Esta é a organização certa?

Identidade da conta resolvida

Domínio oficial com link a partir de um diretório autorizado

Ela se encaixa nos nossos critérios de conta?

Decisão de aderência com justificativa

Serviço de inspeção publicado e localização atendida

Podemos contatá-la por este canal?

Status de prospecção revisado de forma independente

Política aplicável e permissões documentadas

Esses resultados não devem se sobrepor uns aos outros. Uma aderência excelente não torna a conta elegível para prospecção. Um canal de contato aprovado não torna relevante uma empresa que não tem nada a ver com o seu público.

Defina as exclusões junto com as regras de inclusão: clientes atuais, concorrentes, localizações não atendidas, contas já rejeitadas e organizações em uma lista de supressão. Aplique-as antes do enriquecimento caro e novamente antes da exportação. Essa segunda verificação protege contra mudanças de estado que ocorrem enquanto um crawl está em andamento.

Seu contrato de aceitação também deve nomear os campos obrigatórios e os responsáveis. Decida quem resolve correspondências incertas, quem aprova novas fontes e quem pode alterar as regras de qualificação. O web scraping para geração de leads fica mais fácil de operar quando “pronto para revisão” tem um significado por escrito, em vez de depender do último script que rodou.

Escolha fontes que forneçam os campos de que você precisa

Comece com um pequeno inventário de fontes. Registre, para cada uma, o método de acesso, a finalidade permitida, os campos esperados, o comportamento de atualização e o responsável. Uma API documentada ou uma exportação licenciada pode ser mais simples de manter do que HTML quando atende ao mesmo requisito.

Use fontes de descoberta para localizar candidatos e páginas das próprias organizações para verificar os atributos relevantes. Uma categoria de diretório é uma pista de descoberta. A página de serviços da própria empresa é uma evidência mais forte do que ela anuncia atualmente. Nenhuma das duas fontes comprova intenção de compra.

Fonte

Contribuição útil

Limitação importante

Diretório setorial autorizado

Empresas candidatas e categorias

Os cadastros podem estar desatualizados ou ser patrocinados

Site oficial da empresa

Serviços, unidades, domínio oficial

As afirmações refletem o ponto de vista da própria empresa

API autorizada de registro de empresas

Identidade jurídica e dados de registro

A identidade jurídica pode ser diferente do nome fantasia

Lista de contas existentes no CRM

Correspondência e exclusões

Os registros existentes também podem estar desatualizados

Revise os termos e as condições de acesso aplicáveis ao site antes da coleta. Respeite as regras de rastreamento publicadas e os limites configurados. O Robots Exclusion Protocol descreve diretivas para crawlers, mas diz explicitamente que elas não são um mecanismo de autorização de acesso. Um arquivo robots permissivo não é uma licença geral para coletar ou reutilizar dados. RFC 9309

No web scraping para geração de leads, a qualidade da cobertura importa mais do que o número de domínios na fila. Faça amostragens de diferentes categorias, regiões e modelos de página antes de se comprometer com uma fonte. Um diretório dominado por anúncios pagos pode distorcer seu universo de contas mesmo quando cada campo extraído está tecnicamente correto.

Mantenha a descoberta e a verificação substituíveis de forma independente. Se um diretório deixar de estar disponível, você deve conseguir aposentá-lo sem reconstruir seu modelo de identidade de empresas. Para limites de crawl e design de filas, veja nosso guia de web crawling com Python.

Projete um esquema de empresa com evidências anexadas

Armazene fatos como observações antes de combiná-los em uma conta. Uma observação diz o que uma determinada fonte mostrava em um determinado momento. Uma conta é a sua interpretação atual dessas observações.

Essa separação evita uma falha comum: sobrescrever uma categoria de serviço verificada com um rótulo de diretório menos confiável só porque o diretório foi consultado depois. Ela também permite que os revisores reconstruam por que uma decisão de qualificação mudou.

Campo

Finalidade

Regra de validação

account_id

Identidade interna estável

Gerado internamente e nunca derivado apenas do nome exibido

company_name

Rótulo legível

String não vazia, com a grafia original preservada

canonical_domain

Candidato à correspondência

Hostname normalizado mais mapeamento de aliases revisado

service_category

Aderência da conta

Vocabulário controlado com evidência de apoio

operating_region

Aderência geográfica

Área de atendimento separada do endereço registrado

source_url

Procedência da observação

Página exata que sustenta a observação

observed_at

Momento da coleta

Timestamp em UTC atribuído pelo seu coletor

evidence_text

Suporte revisável

Trecho curto e relevante, não um dump da página inteira

parser_version

Reprodutibilidade

Versão que identifica as regras de extração

review_status

Controle do fluxo de trabalho

Valor explícito como pending, accepted ou rejected

Mantenha source_updated_at separado se a página de fato informar uma data de atualização significativa. Buscar uma página hoje não significa que a informação por trás dela foi escrita hoje. Da mesma forma, o ano do copyright não é um timestamp confiável para uma afirmação sobre um serviço.

Alguns sites publicam informações da organização em dados estruturados. O vocabulário Organization do Schema.org define propriedades como nomes, URLs, endereços e identificadores. Trate esses campos como candidatos à extração e depois verifique se a marcação descreve a organização-alvo, e não um publisher, uma empresa controladora ou um item sem relação na página.

Use null para informações ausentes. Não converta uma categoria de serviço ausente em “não oferece o serviço”, nem uma localização ausente em “fora do nosso mercado”. Desconhecido e negativo são estados diferentes. Preservar essa distinção torna o web scraping para geração de leads mais útil do que uma planilha que transforma silenciosamente falhas de extração em decisões de negócio.

Construa a extração como uma etapa delimitada e observável

Dê a cada fonte um pequeno adaptador que retorne observações no mesmo esquema. Mantenha separadas a busca, a análise (parsing) e a qualificação de negócio. Uma mudança de layout da página deve exigir uma correção no parser, não a reescrita da sua integração com o CRM.

Para páginas renderizadas no servidor, um cliente HTTP e um parser de HTML costumam ser um ponto de partida razoável. Use um navegador somente quando o conteúdo necessário realmente depender da execução da página ou de interação. A comparação entre Scrapy e Beautiful Soup ajuda a distinguir um framework de crawl de uma biblioteca de parsing, e o guia de clientes HTTP em Python cobre a camada de requisições.

Imponha limites a todo job de coleta: hosts aprovados, número máximo de páginas, timeout de requisição, tamanho da resposta, concorrência por host e tentativas limitadas. Um crawler que segue todos os links que encontra vai se desviar para páginas irrelevantes e multiplicar tanto os custos quanto o trabalho de revisão.

Trate erros como resultados classificados. Um rate limit deve desacelerar ou pausar a coleta. Uma resposta “forbidden” deve disparar uma revisão da fonte, e não uma tentativa interminável de contornar a restrição. Uma resposta bem-sucedida sem os campos esperados deve entrar em uma fila de investigação do parser, em vez de virar um registro de empresa vazio.

A extensão AutoThrottle do Scrapy ajusta os atrasos de download com base na latência das respostas, respeitando as configurações de concorrência e de atraso definidas. É um componente de agendamento útil, mas você ainda precisa de decisões de acesso específicas para cada fonte e de limites operacionais.

Acompanhe separadamente as páginas buscadas, os parsings bem-sucedidos, a cobertura dos campos obrigatórios e a aceitação após revisão. Uma taxa de sucesso HTTP pode parecer saudável enquanto um template redesenhado remove silenciosamente todos os campos úteis. Para um coletor de dados de leads, “o job terminou” diz menos do que “as evidências esperadas da conta passaram pela validação”.

Normalize e elimine duplicatas sem mesclar empresas diferentes

Normalize espaços em branco e variações óbvias de URL antes de fazer a correspondência de registros. Guarde os valores originais para que um revisor possa ver o que mudou. Não remova palavras dos nomes das empresas de forma tão agressiva que empresas distintas fiquem indistinguíveis.

O exemplo em Python a seguir opera apenas sobre observações sintéticas. Ele normaliza hostnames e agrupa registros para revisão. Não busca sites, não resolve entidades jurídicas e não aprova mesclagens no CRM.

from collections import defaultdict
from urllib.parse import urlsplit


def domain_key(value):
    value = value.strip()
    candidate = value if "://" in value else "https://" + value
    parts = urlsplit(candidate)
    if parts.scheme not in {"http", "https"} or not parts.hostname:
        raise ValueError("Expected a company HTTP(S) website")
    if parts.username or parts.password or any(c.isspace() for c in value):
        raise ValueError("Credentials and whitespace are not accepted")
    _ = parts.port  # Reject malformed or out-of-range ports.
    host = parts.hostname.rstrip(".").encode("idna").decode("ascii").lower()
    return host.removeprefix("www.")


observations = [
    {"name": "Example Tools", "website": "https://www.example.com/about",
     "source_url": "https://directory.example/companies/one"},
    {"name": "Example Tools Ltd", "website": "example.com/",
     "source_url": "https://example.com/services"},
    {"name": "Example Regional", "website": "regional.example.com",
     "source_url": "https://regional.example.com/about"},
]

groups = defaultdict(list)
for observation in observations:
    groups[domain_key(observation["website"])].append(dict(observation))

assert len(groups["example.com"]) == 2
assert len(groups["regional.example.com"]) == 1
assert domain_key("https://EXAMPLE.com:443/") == "example.com"
print({key: len(rows) for key, rows in sorted(groups.items())})

A saída contém dois grupos candidatos: example.com, com duas observações, e regional.example.com, com uma. Manter o subdomínio é intencional. Nunca presuma que manter apenas os dois últimos rótulos do hostname identifica uma empresa: sufixos públicos e hospedagem compartilhada tornam esse atalho pouco confiável.

A documentação do Python sobre parsing de URLs alerta que as funções de parsing não validam URLs. As verificações aqui servem só para demonstrar uma correspondência limitada. Não são controles de segurança de rede. Um fetcher em produção precisa validar destinos e redirecionamentos separadamente antes de fazer requisições.

Correspondências de domínio são evidências úteis, não identidade perfeita. Subsidiárias diferentes podem compartilhar um domínio, e uma única organização pode ter várias marcas e domínios por país. Envie os casos ambíguos para uma fila de revisão com os IDs das contas candidatas e os motivos da correspondência. Somente uma correspondência aceita deve atualizar sua tabela de aliases.

Essa distinção é central para que o web scraping para geração de leads seja confiável: a deduplicação deve reduzir contas duplicadas sem apagar as evidências que revelaram um conflito.

Qualifique contas e entregue-as ao CRM com segurança

Comece com regras de qualificação explicáveis. Uma conta pode atender a um critério de serviço, falhar em um requisito geográfico ou continuar sem resolução por falta de evidências. Armazene esses resultados individuais antes de calcular qualquer prioridade geral.

Em um piloto inicial, use categorias como “pronta para revisão da conta”, “precisa de evidências” e “excluída”. Esses rótulos são mais fáceis de auditar do que uma pontuação que mistura incógnitas e sinais negativos em um número opaco. Se depois você adicionar pesos, versione o conjunto de regras e guarde os motivos que contribuíram para cada resultado.

Defina uma fronteira clara com o CRM. Registros aprovados podem virar entradas de pesquisa de contas. Eles não devem disparar prospecção automaticamente só porque a importação deu certo. Mantenha a decisão de elegibilidade para contato fora do seu job de scraping.

A documentação da API de companies da HubSpot recomenda incluir o domínio da empresa para ajudar a evitar duplicatas e documenta a atualização de registros de empresas por ID. Seja qual for o seu CRM, guarde o identificador que ele retorna e defina um comportamento de correspondência explícito antes de enviar um segundo lote.

Mantenha um registro de exportações com o ID da sua conta, o ID do registro de destino, a versão do payload e o último resultado confirmado. Em uma nova tentativa, reconcilie a tentativa anterior antes de criar outro registro. Não presuma que um campo de domínio torna automaticamente idempotente toda escrita via API.

Limite as atualizações aos campos que pertencem ao coletor. Um responsável pela conta verificado, um status de relacionamento negociado ou uma razão social corrigida manualmente não devem desaparecer porque um crawler produziu um novo palpite. Use uma política de precedência de campos revisável e mantenha as exportações bem-sucedidas separadas das novas tentativas pendentes.

Meça o web scraping para geração de leads nessa fronteira: contas únicas aceitas, correspondências rejeitadas, evidências ausentes e custo por conta aceita. Linhas brutas por minuto premiam duplicatas. Um pipeline útil premia registros em que sua equipe realmente pode confiar.

Mantenha separadas as decisões de coleta, privacidade e prospecção

Colete apenas os atributos de negócio necessários para a finalidade declarada de pesquisa de contas. A segmentação no nível da empresa normalmente não exige números de celular pessoais, históricos comportamentais individuais ou características pessoais sensíveis. Evite adicionar esses campos só porque uma página os exibe.

O contexto empresarial não elimina automaticamente as obrigações de privacidade. O Information Commissioner's Office (ICO), do Reino Unido, explica que o UK GDPR pode se aplicar a dados pessoais usados em marketing B2B, inclusive a informações disponíveis publicamente. Suas orientações também distinguem, nas regras de marketing eletrônico, os assinantes corporativos dos empresários individuais e de certas sociedades de pessoas. A página está em revisão após mudanças na legislação, então confira a redação atual ao aprovar um fluxo de trabalho no Reino Unido. Orientações do ICO sobre marketing B2B

Nos Estados Unidos, a FTC afirma que a CAN-SPAM abrange e-mails comerciais e não isenta mensagens B2B. Suas orientações tratam da identificação do remetente, das linhas de assunto, do endereço postal e do tratamento de descadastramentos. Esses requisitos dizem respeito ao envio de mensagens. Eles não concedem permissão para fazer scraping de um site nem comprovam conformidade em outra jurisdição. Guia de conformidade da FTC

Traduza a política aplicável em campos operacionais: finalidade aprovada, regra de retenção, restrições de acesso, status de supressão e responsável pela revisão. Deixe a equipe responsável por privacidade ou a equipe jurídica determinar o que é adequado para as jurisdições e os canais realmente envolvidos.

Torne a supressão duradoura entre execuções. Se uma conta ou um contato precisa ser excluído, redescobri-lo em outro site não pode reativá-lo silenciosamente. Aplique a mesma regra às exportações posteriores e aos backups restaurados. O web scraping para geração de leads é um processo de coleta, não um substituto para decidir como os dados resultantes podem ser usados.

Principais conclusões

  • Defina os critérios de conta e as evidências exigidas antes de construir o crawler.
  • Mantenha as observações de origem separadas das contas normalizadas e das decisões de qualificação.
  • Trate correspondências de domínio como candidatas, com revisão para domínios compartilhados e múltiplas marcas.
  • Reconcilie as novas tentativas no CRM e proteja os campos mantidos manualmente contra sobrescritas automáticas.
  • Acompanhe a permissão de coleta, a aderência da conta e a elegibilidade para prospecção como decisões separadas.

FAQ

Um registro de empresa obtido por scraping deve virar automaticamente uma oportunidade de venda?

Não. Crie primeiro um registro de pesquisa de conta e deixe seu processo de vendas decidir se existe uma oportunidade. Um site pode mostrar serviços ou localizações relevantes sem indicar um projeto de compra ativo. Manter as contas de pesquisa separadas das oportunidades também torna os relatórios de pipeline mais significativos e impede que seu CRM trate cada empresa descoberta como receita potencial.

Um modelo de linguagem pode classificar as descrições de serviços das empresas?

Sim, como uma etapa de classificação revisada, com uma taxonomia fixa e evidências de origem. Exija que a saída identifique o texto que a sustenta e permita o resultado “desconhecido”. Trate o conteúdo das páginas como dados não confiáveis, e não como instruções para o modelo. Avalie o classificador com exemplos rotulados por pessoas antes de usar sua saída para priorizar contas, e mantenha as inferências geradas pelo modelo separadas dos fatos observados.

Como anúncios de aquisição devem afetar os registros de contas existentes?

Envie-os para um fluxo de revisão de entidades em vez de mesclar registros automaticamente. Uma aquisição pode mudar o controle acionário sem mudar de imediato marcas, sites, entidades operacionais ou relacionamentos no CRM. Registre o anúncio como uma observação datada e depois deixe um responsável decidir quais relacionamentos de contas e aliases precisam ser atualizados. Preserve os identificadores históricos para que exportações e decisões anteriores continuem rastreáveis.

Conclusão

O resultado mais valioso do web scraping para geração de leads é um registro de conta defensável. Ele tem identidade resolvida, atributos de negócio úteis, uma trilha de origem clara e uma decisão de qualificação que outra pessoa pode inspecionar. O número de páginas buscadas é apenas uma métrica de apoio.

Comece com uma única fonte aprovada, uma definição de conta restrita e um lote pequeno que os revisores consigam examinar por completo. Corrija correspondências incorretas e evidências ausentes antes de aumentar o volume de crawl. Depois, adicione o agendamento de atualizações, os aliases revisados e a reconciliação com o CRM sem mudar o significado dos seus campos principais.

Mantenha um checklist operacional curto ao lado do coletor: fonte aprovada, observação válida, conta correspondida, exclusões verificadas, exportação confirmada. Quando algo falhar, interrompa-o na etapa correspondente em vez de deixar a incerteza chegar ao CRM.

Se manter a camada de busca está tirando tempo da qualidade das contas, avalie a Scraper API da WebScrapingAPI para buscar páginas dentro do escopo de coleta que você aprovou. Seu esquema, suas verificações de evidências e suas regras de qualificação devem continuar sob o seu controle, independentemente de como o HTML chega ao parser.

Sobre o autor

Robert Munceanu, Desenvolvedor Full-Stack @ WebScrapingAPI

Robert Munceanu

Desenvolvedor Full-Stack

Robert Munceanu é um programador Full Stack na WebScrapingAPI, contribuindo em todas as áreas do produto e ajudando a criar ferramentas e funcionalidades fiáveis que sustentam a plataforma.

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.