Eu tenho um problema. Uso a classe robot, para interação com o desktop. Basicamente o robô entra em um site, coleta as informações e as atribui dentro de uma variavel interna para posteriormente realizar o povoamento em um banco de dados.
Meu problema é o seguinte, como eu coleto a informação do programa/site.
Por exemplo, como eu faço para que o robot extraia o nome Google, na pagina inicial do google, ou o texto" G1 - O portal de …" , e coloque em uma variável? Obrigado.
O método abaixo recebe uma URL, acessa a página, e extrai todos seus links com um selector. Talvez vc possa adaptar isso para sua finalidade.
publicvoidcrawl(Stringurl){try{Connectionconnection=Jsoup.connect(url).userAgent(USER_AGENT);DocumenthtmlDocument=connection.get();this.htmlDocument=htmlDocument;System.out.println("Received web page at "+url);ElementslinksOnPage=htmlDocument.select("a[href]");System.out.println("Found ("+linksOnPage.size()+") links");for(Elementlink:linksOnPage){this.links.add(link.absUrl("href"));}}catch(IOExceptionioe){// We were not successful in our HTTP requestSystem.out.println("Error in out HTTP request "+ioe);}}
B
Br_Maplestory
Beleza, vou tentar adaptar.Obrigado.
Rodrigo_Void
importjava.io.IOException;importorg.jsoup.Connection;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;publicclassGetPageText{publicstaticvoidmain(String[]args){try{Connectionconnection=Jsoup.connect("http://www.meuip.com.br");DocumenthtmlDocument=connection.get();System.out.println(htmlDocument.selectFirst("#div_ip").ownText());}catch(IOExceptionioe){System.out.println("Error in out HTTP request "+ioe);}}}
Esse código ai vai acessar um site que pega seu ip, mas ele vai buscar e te trazer o valor do html pelo ID da div onde é exibido.
Lembrando que faz uso da lib Jsoup que vc precisa adicionar ao seu projeto.
Rodrigo_Void1 like
Detalhe: o nome Google no canto superior esquerdo é uma imagem.
Pra fazer isso é interessante manjar um pouco de html básico, pois vai precisar estudar o fonte da página antes.
B
Br_Maplestory
Sim eu não tinha visto que era uma imagem. Na verdade eu quero os textos mesmo.
Rodrigo_Void1 like
Connectionconnection=Jsoup.connect("https://www.google.com.br/search?q=g1&oq=g1&aqs=chrome.0.69i59j0l5.598j0j7&sourceid=chrome&ie=UTF-8").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1");DocumenthtmlDocument=connection.get();ElementslinksOnPage=htmlDocument.select("h3.r");System.out.println("Found ("+linksOnPage.size()+") links");for(Elementlink:linksOnPage){System.out.println(link.selectFirst("a").ownText());}
Rodrigo_Void
Show
marca a solução pra fechar o tópico.
B
Br_Maplestory
Na verdade não resolveu não. Eu uso tokem para autenticar no site, nesse caso que você me passou, ele não usa a seção que esta no navegador em meu desktop, ele meio que “simula” um navegador no próprio java correto?
Se sim, como faço para extrair os textos, na seção ao qual esta ativa no navegador? ou se possível ele da um control + c nos textos e imputar em uma variável ?
Pois posso usar a classe robot, para dar um triplo clique e selecionar o texto. O problema é como traze-lo para dentro da aplicação.
Pensei em usar um jframe ou jpanel, porem queria saber se ha alguma outra forma de fazer isso, sem ter de usar caixas de texto.
Rodrigo_Void1 like
Vc n vai conseguir interagir com o seu navegador, usando a sessão dele. O único modo seria via robot, que faria manualmente pra vc, mas tbm neste momento vc n poderia usar a máquina.
Que tipo de sessão o site usa?
Obs.: na verdade a resposta resolve oq vc pediu, aconteceu q vc está querendo mais coisas específicas e precisa adaptar o código. Mas blz
B
Br_Maplestory
Sim o seu realmente funciona , porem não funcionaria para a minha necessidade. Muito obrigado.