Jump to content

Postagens Recomendadas

Ola boa noite! pessoal eu gostaria de uma ajuda. Eu tenho uma ideia de fazer um robo que navegue em um determinado site (url) e que faça um procedimento que e: passo 1ª empreecher sozinho os dois inputs de login para entre na site. passo 2º clicar sozinho em login. Passo 3º selecionar um determinado ID de um elemento html "<section>" passo 3º seria mostra o email que apareceu no <section> e mostra em um alert na tela do usuario que esta atrelado ao ID que ele digitou para buscar na url. Esse e o site que ja criei: https://pontofull.com/robo/ estou mostrando para vcs saberem +- como seria a ideia. 

 

Observação: Seria como eu faço isso ? que linguagem usar ? ... eu estou fazendo um curso de java na ebaconline de javascript e o professor estava mostrando o "DOM" e "jquery" ex: document.get.  Aqui em baixo vou deixar o codigo que eu conseguir fazer em python pegou normalmente. Porem eu gostaria de rodar na web. 

 

from selenium import webdriver

 

driver = webdriver.Chrome(executable_path=r"C:\Users\TI-ADM\Documents\driver\chromedriver.exe")

 

driver.get("https://cb10.td.commpeak.com/auth/login?redirect=/")

 

driver.implicitly_wait(3)  #segundo

 

campoBusca = driver.find_elements_by_name("username")[0]

 

campoBusca2 = driver.find_elements_by_name("password")[0]

 

campoBusca.send_keys("felipepereira")

 

campoBusca2.send_keys("123456")

 

driver.find_element_by_id("submit").click()

 

driver.find_elements_by_class_name("caret")[5].click()

 

driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/ul[1]/li[6]/ul/li[2]/a").click()

 

campolead = driver.find_elements_by_name("lead_id")[0]

 

campolead.send_keys("12215389")

 

campo = driver.find_element_by_xpath("/html/body/div[4]/div[2]/div[2]/div/div[1]/input").click()

 

lista = driver.find_element_by_xpath("/html/body/div[5]/table/tbody/tr/td[1]/a").click()

 

resultado = driver.find_elements_by_class_name("edit")[0]

 

print(resultado)

 

 

Obrigado pela atenção 

Link to comment
Compartilhe em outros sites

  • 2 weeks later...
1 hora atrás, carlosscheffer disse:

E ai @felipepereira, tudo bem?

Não entendi o que você quer dizer com isso:

Pode explicar um pouco mais?

Ola boa tarde! muito obrigado por responder. Quero muito aprender a fazer isso. Deixa eu te explicar melhor. Na empresa onde eu trabalho temos um site que sempre e solicitado a nos "TI" que precisamos entrar no site e colocar o ID de determinado cliente e depois fazer uma busca nesse site e pegar o email que esta vinculado ao ID e logo em seguida informa ao cliente o email que foi localizado. Porem eu pensei em automatizar isso. Criando um robo na web que e esse aqui https://pontofull.com/robo/ que quando o cliente colocar o ID e clicar em buscar o robo logo em seguida vai rodar tudo por tras sem o usuario ver, e fazer a mesma coisa que um humano faria e logo em seguida retornaria para o site e daria um alert em um modal informando o email que foi encontrado. Com isso eu tava pesquisando na net e achei o puppeteer que faz isso tudo. Segue o codigo que eu fiz e ja esta funcionando.

 

const puppeteer = require('puppeteer');


 

(async () => {

 

  const browser = await puppeteer.launch({headless: false});

  const page = await browser.newPage();

  await page.goto('https://cb10.td.commpeak.com/auth/login?redirect=/index/index');

 

  // - Acessando a página de login

 

  await page.click('[name="username"]', process.env.UNSPLASH_username);

  await page.type('[name="username"]', 'felipepereira');

  await page.click('[name="password"]', process.env.UNSPLASH_password);

  await page.type('[name="password"]', '123456');

  await page.click('[name="submit"]');

  await page.goto('https://cb10.td.commpeak.com/search/lead');

 

  await page.click('[name="lead_id"]');

  let valor = await page.type('[name="lead_id"]', '12418313');

  await page.click('[type="submit"]');

  await page.waitForNavigation();

  alert('body > div:nth-child(7) > table > tbody > tr > td.lead-email');


 

})();

Porém eu tenho um duvida

1ª Nesse campo ( let valor = await page.type('[name="lead_id"]', '12418313');) esse valor que esta 12418313 teria que ser preenchido dinamicamente associando o campo input do html desse site https://pontofull.com/robo/ que funcionaria da seguinte maneira. Quando o cliente colocar o id no input e logo depois clicar em buscar o java teria que rodar esse script que esta em cima. so que o problema e que esse campo que eu informei aqui encima teria que ser preenchido dinamicamente. e no final mostra o alert "modal" na tela do site informa o email que o rodo localizou.

 

 

Aqui esta o codigo do HTML se for preciso 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <title>RobôID</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<!--===============================================================================================-->    
    <link rel="icon" type="image/png" href="images/icons/favicon.png"/>
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="fonts/Linearicons-Free-v1.0.0/icon-font.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/animate/animate.css">
<!--===============================================================================================-->    
    <link rel="stylesheet" type="text/css" href="vendor/css-hamburgers/hamburgers.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<!--===============================================================================================-->
    <link rel="stylesheet" type="text/css" href="css/util.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
<!--===============================================================================================-->
</head>
<body>
    
    <div class="limiter">
        <div class="container-login100" style="background-image: url('images/fundo.jpg');">
            <div class="wrap-login100 p-t-190 p-b-30" style="margin-top: -95px">
                <form class="login100-form validate-form">
                    <div class="login100-form-avatar">
                        <img src="robo.gif" alt="AVATAR">
                    </div>

                    <span class="login100-form-title p-t-20 p-b-45">
                        Robô ID
                    </span>

                    <div class="wrap-input100 validate-input m-b-10" data-validate = "Digite um ID valido">
                        <input class="input100" type="text" name="username" placeholder="Digite o ID">
                        <span class="focus-input100"></span>
                        <span class="symbol-input100">
                            <i class="fa fa-user"></i>
                        </span>
                    </div>


                    <div class="container-login100-form-btn p-t-10">
                        <button class="login100-form-btn">
                            Buscar
                        </button>
                    </div>


            
                </form>
            </div>
        </div>
    </div>
    
    

    
<!--===============================================================================================-->    
    <script src="vendor/jquery/jquery-3.2.1.min.js"></script>
<!--===============================================================================================-->
    <script src="vendor/bootstrap/js/popper.js"></script>
    <script src="vendor/bootstrap/js/bootstrap.min.js"></script>
<!--===============================================================================================-->
    <script src="vendor/select2/select2.min.js"></script>
<!--===============================================================================================-->
    <script src="js/main.js"></script>

</body>
</html>

 

de qualquer forma agradesço muito pelo fato de ter falado comigo. 

 

 

index.html index.js

Editado por felipepereira
Link to comment
Compartilhe em outros sites

Acredito que entendi, Felipe. 

Basicamente você quer fazer um "webcrawler", que nada mais é do que um robô que acessa páginas na web.

Eu havia ficado um pouco confuso quando você disse sobre "rodar na web", pois há vários formatos possíveis e entendíveis neste termo. Nada te impede de rodar Python na web, desde que você rode num servidor através de uma comunicação com seu frontend. Mas muitas vezes a gente se pergunta como? Mais abaixo eu falo um pouco sobre isso.

Sobre linguagem é relativo, que linguagem você está acostumado? Eu trabalhando com Node.js/JavaScript a alguns anos, então eu daria/dou preferência para ela, principalmente neste caso, pois ela consegue se dar bem para resolver o problema proposto (inclusive recomendo 😅). Python também é comumente utilizada neste cenário, mas o ponto que gostaria de frisar é não necessariamente haverá uma melhor linguagem.

Mas beleza, depois da palestrinha vou falar de Node  e JavaScript que são cenários que eu manjo. 

Dê uma olhada neste post/tutorial aqui, de como criar um com NodeJS um "webcrawler", com certeza ele vai te ajudar.

Mas uma dica que eu dou, é que você não crie diretamente no ".js" de seu site/sistema, quero dizer no frontend. \

Isso por que deves considerar recursos e o tempo de resposta da busca que fez em outro site... No modelo ideal você teria este "crawler", que chamo "worker", buscando "tarefas" para ser executada, essa busca pode ser de uma fila ou banco de dados.  E assim que o worker identificar haver algo nesta fila, ele trabalhará para executar o que lhe foi demandado e atualizar o status da demanda. Assim você poderá consultar no seu frontend.

Desenhei superficialmente um fluxo para você se inspirar.

image.png

Este primeiro é oque o usuário/você deverá fazer

image.png

Este já é (superficialmente) fluxo que seu worker deverá fazer para que o usuário saiba o resultado. Quando falo em atualizar status, seria atualizar o registro no banco de dados.

 

Eu mostrei um cenário que grandes empresas/aplicações utilizam para lidar com esse tipo de tarefa, principalmente em larga escala, alta demanda, ele é bom, porém pode ser custoso e complexo no início.

Assim sendo estas são minhas sugestões (pode ser que haja até mais simples, mas são essas que EU achei legais):

- Você poderia tentar seguir o tutorial que te mandei, e adaptar para uma página na web, muita coisa que roda em node pode rodar no browser

- Hospedando sua aplicação em python num servidor onde ele leia uma fila/banco de dados (sinceramente acho essa a mais viável, tendo em vista com boa parte pronta)

- Ou fazer me Node.js e hospedando num servidor onde ela leia uma fila/banco de dados

Espero ter ajudado e boa sorte no projeto! Depois me diz o que você fez 😉

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...