Instruções para aquisição

Instale o zBot (para Windows). Rode este sistema no seu computador e vários outros que podem ser baixados diretamente pelo zBot ou criados por você mesmo(a)!

Detalhes do Sistema

Extrair via busca no Google

29/11/2023 | Build: 84
Do pacote: Extrator de contatos

Descrição: Faz a busca de um ou mais termos no buscador Google. Em seguida entra em cada link listado no resultado, fazendo a coleta de e-mails ou telefones contidos nas páginas encontradas.

Tutorial em Vídeo

Ajuda

Recomendamos não usar muitos termos de busca de uma só vez, pois caso você precise interromper a busca, poderá prejudicar a organização dos dados.

Termos parecidos muitas vezes trazem links repetidos. O sistema sabe disso e ignora links já visitados em uma mesma ação de extração de dados. Isso costuma poupar muito tempo e processamento de dados.



Dica 1: Ao terminar uma extração, caso você faça outra extração usando novos termos, os links já visitados são mantidos na memória, então eventuais links repetidos que aparecerem na nova extração também serão ignorados. Se você cancelar ou fechar o script, essa lista de links visitados e zerada.

Dica 2: O sistema também vai coletar emails ou telefones que estejam listados diretamente na página de resultado da busca e não apenas os que estiverem nas páginas listadas.

Código do script

Este script também pode ser baixado diretamente pelo software zBot
&CriarBotao("Configuração";"configurar") //*
&CriarBotao("Obter emails";"extrair emails") //*
&CriarBotao("Obter telefones";"extrair telefones") //*

&TbDefinirCamposVisiveis("data_cadastro,email,nome,telefone")[0]

#configurar
    &ValorPedirVarios("Configurações"; "termo de busca,ignorar se tiver")[0] //*
#

#extrair emails
// definie variáveis de controle para o extrator de dados saber se é para extrair emails ou telefones
[modo extracao] = "email"
&BlocoExec("processar extração")[0] //*
#

#extrair telefones
// definie variáveis de controle para o extrator de dados saber se é para extrair emails ou telefones
[modo extracao] = "telefone"
&BlocoExec("processar extração")[0] //*
#

// Faz a busca para um termo de busca
#processar extração
    &TextoQtdLinhas([termo de busca]; "qtd termos")[0] //*      
    [inseridos] = 0
    &TextoObterDataHora("hoje")[0] //*
    &TextoDataInfo([hoje]; "secao_data"; "hoje")[0] //* valor -#-/ ano, mês, dia, hora, minuto, segundo, dia_semana, secao_data, secao_hora
    &TextoGerarIdUnico("id único")[0] //*
        
    &Progresso2Iniciar("Termos";[qtd termos])[0] //*    
    &Repetir([qtd termos])
       [links] = ""
       // Primeiro faz a busca       
       [termo atual] = [termo de busca*[_indice]]
       &Progresso2Inc(1)[0] //*       
       &StatusInserir("Efetuando busca: [termo atual]";"importante")[0] //* cor: erro, sucesso, alerta, preto, cinza, importante
       &BlocoExec("efetuar busca")[0] //* os dados vão para "conteúdo"       
       &StatusInserirExtra("OK";"sucesso")[0] //* cor: erro, sucesso, alerta, preto, cinza, importante
       
       // Aproveita e extrai e-mails na própria página de busca
       &StatusInserir("Obtendo e-mails da página de resultado...";"preto")[0] //* cor: erro, sucesso, alerta, preto, cinza, importante
       [link atual] = "Resultado da busca: [termo de busca]"       
       [dados] = [conteúdo]              
       &BlocoExec("extrair dados")[0] //* os dados vão para "links"               
       // Pega os links contidos no resultado
       &StatusInserir("Obtendo links da busca...";"preto")[0]
       &BlocoExec("extrair links")[0] //* os dados vão para "links"            
       &TextoQtdLinhas([links]; "qtd")[0] //*
       &StatusInserirExtra("Total: [qtd]";"preto")[0]    
       
       // Agora entra em cada link para procurar emails dentro
       &StatusInserir("Extraindo contatos dos links...";"preto")[0]
       &Progresso1Iniciar("Progresso";[qtd])[0] //*
       &Repetir([qtd]) //* a variável _indice terá o número do ciclo atual
         &Progresso1Inc(1)[0] //*    
         [link atual] = [links*[_indice]]
         &TextoTemValorLista([link atual];[ignorar se tiver];"localizou")[0] //* Retorna sim | não
         &Se([localizou];diferente;"sim")
            &TextoTem([links visitados];[link atual];"retorno")[0] //* Retorna sim | não
            &Se([retorno];diferente;"sim")
               &StatusInserir("Link: [link atual] ";"cinza")[0]
               &URLBaixar([link atual];"dados") //*
               &TextoEntre([dados];"#-\title#-/";"#-\/title#-/";"título atual")[0] //* 
               &ValorInserirLinha("links visitados";[link atual])[0] //*     
               &BlocoExec("extrair dados")[0] //* os dados vão para "links"
            .senao
              &StatusInserir("Link já visitado: [link atual] ";"alerta")[0]                            
            .fimse   
         .senao
            &StatusInserir("Link ignorado: [link atual] ";"erro")[0]         
         .fimse   
       .fimrepetir
           
    .fimrepetir   
    &StatusInserir("Fim do processamento";"importante")[0]
    &StatusInserir("Total de e-mails inseridos: [inseridos]";"preto")[0]       
#

// - - - - - - - - - - -

// Efetua uma busca e coloca os dados na variável "conteúdo"
#efetuar busca
    [conteúdo] = "" 
    [link de busca] = "https://www.google.com.br/search?num=100&site=&source=hp&q=[termo atual]"    
    &URLBaixar([link de busca];"conteúdo") //*
    &TextoTem([conteúdo];"unusual traffic from";"resultado")[0] //* Retorna sim | não
    &Se([resultado];=;"sim")
      &NavegadorIr([link de busca])[5] //*
      &NavegadorPosicionar(5;5;700;500)[0] //* topo, esquerda, largura, altura            
      &NavegadorFonteObter("conteúdo")[2] //*    
    .fimSe    
#

// Extrai links da variável "conteúdo" e coloca em "links"
#extrair links    
    &TextoExtrairContendo([conteúdo]; "www"; "dados"; "")[0] //*    
    &Marcador("loop")
    &TextoQtdLinhas([dados]; "qtd")[0] //*
    &Repetir([qtd])
      [link final] = [dados*[_indice]]         
      &TextoSubstituir([link final]; "//"; ""; "link final")[0] //*
      &TextoSubstituir([link final]; "&"; "&"; "link final")[0] //*
      [link final] = "https://[link final]"     
      
      &TextoRemoverFim([link final]; "&"; "link final")[0] //*
      &TextoTem([link final];"google.";"resultado")[0] //* Retorna sim | não      
      &Se([resultado];igual;"não")
         //&TbInserir("email";[link final])[0] //*
          &ValorInserirLinha("links";[link final])[0] //*          
      .fimse    
    .fimrepetir
#

// Extrai emails da variável "dados" e insere na tabela os que não existirem
#extrair dados    
    &Se([modo extracao];igual;"email")
      &TextoExtrairEmails([dados]; "dados")[0] //*
    .senao         
      &TextoExtrairTelefones([dados]; "dados")[0] //*    
    .fimse
        
    &TextoQtdLinhas([dados]; "qtd")[0] //*
    &Repetir([qtd])
      [info] = [dados*[_indice]]
      &Se([info];diferente;"") 
         &TextoTemValorLista([info];[ignorar se tiver];"localizou")[0] //* Retorna sim | não
         &Se([localizou];diferente;"sim")  
            &TbLocalizar([modo extracao];[info]; "localizou")[0] //*         
            &Se([localizou*[modo extracao]];diferente;[info])          
               &TbInserir("[modo extracao],site,obs,descricao,data_cadastro,id_unico";"[info],[link atual],[termo atual],[título atual],[hoje],[id único]")[0] //*
               &ValorInc("inseridos";1)[0] //*
               &StatusInserir("Inserido: [info] (total: [inseridos])";"sucesso")[0]
            .senao
               &StatusInserir("Já tem no banco: [info]";"erro")[0]   
            .fimse
         .senao
            &StatusInserir("Lista de exclusão: [info]";"erro")[0]         
         .fimse      
      .fimse       
    .fimrepetir
#

Termos gerais dos scripts

Os scritps gratuitos ou pagos tem como objetivo disponibilizar funções ou demonstrar possíveis aplicações que podem ser criadas usando a linguagem de programação de scripts do zBot.
Seu código-fonte é fornecido e pode ser livremente estudado, adaptado ou alterado pelo usuário que o adquire. Eventualmente são usados links ou exemplos de funções interagindo com sistemas ou sites populares, mas o zBot não tem nenhum vínculo, propriedade nem parceria com quaisquer produtos de terceiros, nem se responsabiliza por nenhuma consequência de sua utilização, cabendo exclusivamente ao usuário a total responsabilidade sobre isso, sempre levando em conta a licitide de sua aplicação e eventuais termos de uso ou propriedade de terceiros que devam ser considerados.
 Fale conosco