Pegar texto e colocar em variáveis

Fala galera.

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.

public void crawl(String url)
    {
        try
        {
            Connection connection = Jsoup.connect(url).userAgent(USER_AGENT);
            Document htmlDocument = connection.get();
            this.htmlDocument = htmlDocument;

            System.out.println("Received web page at " + url);

            Elements linksOnPage = htmlDocument.select("a[href]");
            System.out.println("Found (" + linksOnPage.size() + ") links");
            for(Element link : linksOnPage)
            {
                this.links.add(link.absUrl("href"));
            }
        }
        catch(IOException ioe)
        {
            // We were not successful in our HTTP request
            System.out.println("Error in out HTTP request " + ioe);
        }
    }
1 curtida

Beleza, vou tentar adaptar.Obrigado.

import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class GetPageText {

    public static void main(String[] args) {
        try {
            Connection connection = Jsoup.connect("http://www.meuip.com.br");
            Document htmlDocument = connection.get();

            System.out.println(htmlDocument.selectFirst("#div_ip").ownText());
        } catch (IOException ioe) {
            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.

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.

1 curtida

Sim eu não tinha visto que era uma imagem. Na verdade eu quero os textos mesmo.

Connection connection = 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");
            Document htmlDocument = connection.get();

            Elements linksOnPage = htmlDocument.select("h3.r");
            System.out.println("Found (" + linksOnPage.size() + ") links");
            for (Element link : linksOnPage) {
                System.out.println(link.selectFirst("a").ownText());
            }
1 curtida

Show
marca a solução pra fechar o tópico.

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.

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

1 curtida

Sim o seu realmente funciona , porem não funcionaria para a minha necessidade. Muito obrigado.

Encontrei uma forma de fazer com o código abaixo…