Capturando HTML de Página Web com Java

Este post foi removido e transferido para a seguinte url:

http://www.mballem.com/post/capturando-html-de-pagina-web-com-java

Anúncios

, , , , ,

  1. #1 por vitinho em 01/07/2011 - 20:50

    😀
    Valeu camarada! Realmente é bem simples, mas eu nem tinha idéa de como começar, rsrsrs…
    Obrigadão…

  2. #2 por alanalvescorrea em 01/08/2011 - 22:04

    e como enviar dados de um arquivo java para uma pagina .php, via post?

  3. #3 por MBallem em 02/08/2011 - 12:14

    Por post não sei te responder. Você pode tentar perguntar isso no Forum GUJ.
    Mas poderia fazer como se fosse por get, usando o objeto HttpResponse:

    String pagina=”http://www.pagina.php?id=1&nome=maria&data=10/11/2010″;
    response.sendRedirect(pagina);

  4. #4 por Edson em 01/09/2011 - 16:49

    Po cara, não funcionou… da o erro abaixo:

    java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.Socket.connect(Socket.java:516)
    at java.net.Socket.connect(Socket.java:466)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
    at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:278)
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:335)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:176)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:748)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:162)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:917)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
    at java.net.URL.openStream(URL.java:1007)
    at LoadPage.getPage(LoadPage.java:10)
    at LoadPage.main(LoadPage.java:34)

  5. #5 por MBallem em 01/09/2011 - 18:53

    Oi Edson.
    Acabei de testar aqui e ta funcionando o código que está postado, inclusive com a mesma url.
    O erro que está aparecendo para você é de timeout, ou seja, não consegue capturar o conteúdo ao site que você indicou na url. Talvez seja algum bloqueio de segurança do seu PC que não deixe (Firewall talvez).

  6. #6 por Samuel em 30/08/2012 - 16:52

    Valeu mesmo cara, eu tenho um relatorio de execução feito com o JUnit Report e preciso ler esses dados que são gerados para um arquivo XML , para isso esse código foi ideal, me deu a ideia certa de como resolver meu problema.

    Obrigado!

  7. #7 por MBallem em 30/08/2012 - 20:12

    Olá Samuel, fico contente em saber que foi útil para você.
    Abraço!

  8. #8 por Hamilton em 19/09/2012 - 15:56

    Boa Tarde!

    Desculpe incomodar, mas se for possível auxiliar com alguma dica ou sugestão…
    Estive pesquisando… e utilizei teu exemplo para capturar o conteúdo de uma página da Web.

    Funcionou perfeitamente…

    Procurei então realizar o mesmo procedimento com uma página da Receita Federal…
    http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/Cnpjreva_Solicitacao.asp

    Nesta página informa-se o CGC e os dados contidos na “figura” para a consulta da situação
    cadastral do CGC. O interesse é a captura dos dados da consulta.

    Mas infelizmente não obtive sucesso nem com o…

    – Internet Explorer 9 Version 9.0.8112.16421 Update Versions: 9.0.9(KB2722913)
    – Mozilla Firefox 15.0.1

    Ocorre a seguinte mensagem:

    Esta pagina usa frames, mas seu navegador nao os suporta.

    Ex:
    File file = new File(“C:\\page.txt”);
    URL url = new URL(“http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/Cnpjreva_Solicitacao.asp”);

    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    BufferedWriter out = new BufferedWriter(new FileWriter(file));
    String inputLine;
    while ((inputLine = in.readLine()) != null)
    {
    // Imprime página no console
    System.out.println(inputLine);
    // Grava pagina no arquivo
    out.write(inputLine);
    out.newLine();
    }
    in.close();
    out.flush();
    out.close();

  9. #9 por MBallem em 19/09/2012 - 20:43

    Olá Hamilton, realmente, fiz o teste aqui e ocorreu o mesmo problema. Eu uso o Chrome como navegador, nele tem uma opção para exibir o código fonte da página. Se clico nessa tal opção, o código exibido é o mesmo da mensagem que apareceu para você.
    O que acontece é o seguinte, quando se usa frame, é como se você dividisse a página em varias paginas dentro de uma só. E cada frame tem sua própria url, nesse caso, a url que você usou é a principal, mas precisaria descobrir a url do frame que você precisa capturar as informações, dai sim você consegue capturar as informações que necessita.
    Lendo o html da pagina principal eu encontrei a url que está dentro de uma tag SRC: “cnpjreva_solicitacao2.asp”. Se clicar nessa url ela vai abrir esta página:
    “http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/cnpjreva_solicitacao2.asp”,
    que não é nada mais que a página que está dentro do frame, porem agora você consegue ler ela, porque não estará mais no frame.

    Espero ter ajudado!

  10. #10 por ANDRÈ em 30/10/2012 - 9:21

    Po cara Obrigado vai me ajudar muito no meu TCC

  11. #11 por MBallem em 30/10/2012 - 12:06

    Legal que vai te ajudar André.

  12. #12 por Ronaldo em 31/10/2012 - 15:14

    Marcio Desculpe te incomodar. É o seguinte, sou iniciante em java e consegui entender quase todas as linhas do seu código menos essas:

    Na linha 10 — new InputStreamReader(url.openStream()) — O Que isso faz?
    linha 25 —- out.flush() — O Que isso faz?
    —-URL url = null —- pode criar um tipo URL?

    ahh estou com duvidas tbm nos imports.

    Obrigado Marcio
    ahh e parabéns!(rodei seu código e funcionou perfeitamente).

  13. #13 por MBallem em 31/10/2012 - 16:46

    Olá Ronaldo, é o seguinte:

    url.openStream() : Abre uma conexão com esta URL e retorna um InputStream para leitura a partir da conexão.

    out.flush(): Libera o fluxo desta saída e força qualquer bytes de saída no ainda no buffer a ser escrito.

    Uma dica Ronaldo, sempre que tiver dúvida sobre algum método referente a uma classe própria do Java, procure ler a documentação (JavaDoc), para entender o que o tal método representa. Isso é algo que você precisa se acostumar, porque vai precisar fazer isso muitas vezes programando em Java.

  14. #14 por Mauricio Hirsch em 12/02/2013 - 22:30

    Boa noite amigo!

    Estou precisando criar um código em Java, que o usuário digite o endereço DNS de qualquer site e o Java faça uma conexão com a internet mostrando todo o conteudo do site, parecido com os serviços do Google. Você tem alguma ideia ou um exemplo parecido de como posso começar a desenvolver meu código?

  15. #15 por MBallem em 13/02/2013 - 0:15

    Olá Mauricio, infelizmente não tenho nenhuma ideia no momento. Vai até os fóruns java, como Guj e Javafree e posta detalhadamente o que precisa, talvez alguém apareça com ideias ou mesmo com um projeto já implementado.

  16. #16 por Mauricio Hirsch em 25/02/2013 - 21:46

    Olá amigo!
    Na verdade parece mais simples do que parece é que eu mesmo sou novo na área e estou com um pouco de dificuldades. Eu somente preciso de alguma classe em Java que faça uma conexão “url” na internet. O resto eu acredito que consigo realizar!

  17. #17 por MBallem em 25/02/2013 - 22:45

    Oi mauricio, essa classe seria a java.net.URL.

  18. #18 por Aurélio Maicá em 24/03/2013 - 22:35

    Ola parabéns pelo post, estou tentando capturar esse endereço aqui:

    url = new URL(“http://maps.googleapis.com/maps/api/geocode/json?address=jango+vidal,+cruz alta,+RS&sensor=true”

    e ocorre o erro:

    java.io.IOException: Server returned HTTP response code: 400 for URL: http://maps.googleapis.com/maps/api/geocode/json?address=jango+vidal,+cruz alta,+RS&sensor=true
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
    at java.net.URL.openStream(URL.java:1037)
    at br.backup.LoadPage.getPage(LoadPage.java:13)
    at br.backup.LoadPage.main(LoadPage.java:38)
    CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

    poderia dar uma força?

  19. #19 por MBallem em 25/03/2013 - 0:23

    Fiz o teste e o conteúdo é capturado sem problemas com o link que você postou. Porém, o mais adequado seria pesquisar por JSON nesse link jackson.codehaus.org. Seu conteúdo é um JSON e não um HTML, é mais fácil trabalhar com a API apropriada.

  1. Capturando conteúdo HTML com JSoup « Programando com Java
%d blogueiros gostam disto: