Capturando HTML de Página Web com Java

Tempos atrás criei uma série de tutoriais sobre manipulação de arquivos em Java. Recebi algumas mensagens perguntando se seria possível copiar o conteúdo HTML de uma página web e gravar este conteúdo em um arquivo. Nunca tinha tentado fazer isso por que nunca precisei. Até nem sei se é útil para alguma coisa, mas resolvi fazer uns testes e descobri que é tão simples quando criar um arquivo.

1. Implementando

Vamos implementar a classe LoadPage para ler um site qualquer e capturar seu conteúdo. Iremos imprimir no console o conteúdo HTML do site e também salvá-lo em um arquivo HTML.

Conforme a Listagem 1, criamos um objeto java.net.URL o qual recebe o endereço da página que vamos capturar. O objeto java.io.File recebe o local e o nome do arquivo em qual salvaremos a página capturada.

No método getPage() criamos um objeto java.io.BufferedReader para ler a página como se estivessemos lendo um arquivo. E o objeto java.io.BufferedWriter irá salvar a página em um arquivo.

Listagem 1. Classe LoadPage
package br.mb.tutorialCapturaPaginaWeb;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;

public class LoadPage {

    public void getPage(URL url, File file) throws IOException {
        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();
    }

    public static void main(String[] args) {
        URL url = null;
        File file = new File("C:\\TutorialArquivos\\page.html");
        try {
            url = new URL("http://ondetrabalhar.com/vagas/1399/arquiteto-java");
            new LoadPage().getPage(url, file);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

É claro que após salvar o arquivo e abri-lo, nós não teremos o layout da página montando conforme o original. Isto ocorre por conta dos arquivos do tipo css, imagens, javascript, entre outros, que não tem seu endereço encontrado fora do servidor da página.

Quando a página é salva no arquivo, é como se tivéssemos ido até as opções do nosso navegador e clicado na opção “Exibir código fonte” e então utilizássemos um ctrl + c para copiá-la e um ctrl + v para colá-la em um editor de texto. Então, fica a dica para quem algum dia precisar de algo deste tipo.

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...