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)!
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.
&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
#