Baixando uma página da web

Java:
Baixando uma página da web

Como fazer:

import java.io.*;
import java.net.*;

public class DownloadPaginaWeb {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://www.exemplo.com");
        HttpURLConnection conexao = (HttpURLConnection) url.openConnection();
        
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(conexao.getInputStream()))) {
            String linha;
            StringBuilder paginaCompleta = new StringBuilder();
            
            while ((linha = reader.readLine()) != null) {
                paginaCompleta.append(linha);
                paginaCompleta.append(System.lineSeparator());
            }
            
            System.out.println(paginaCompleta);
        } finally {
            conexao.disconnect();
        }
    }
}

Saída de exemplo (fragmento da página web):

<!DOCTYPE html>
<html>
<head>
    <title>Página de Exemplo</title>
</head>
<body>
    <h1>Este é um cabeçalho</h1>
    <p>Este é um parágrafo.</p>
</body>
</html>

Aprofundando

Historicamente, o download de páginas da web começou com o surgimento da internet e o protocolo HTTP. Ferramentas de linha de comando como curl e wget foram amplamente usadas antes das bibliotecas dedicadas em várias linguagens de programação.

Alternativas incluem bibliotecas de terceiros como Apache HttpClient ou a biblioteca Jsoup que facilita a raspagem (scrapping) de HTML com métodos robustos para seleção e manipulação de dados.

Sobre execução: é essencial gerenciar corretamente conexões e recursos para evitar vazamentos (leaks) de memória. Java 7 introduziu o try-with-resources para facilitar esse processo. Certifique-se de sempre definir o User-Agent na sua solicitação, porque algumas páginas podem bloquear solicitações que parecem vir de robôs.

Veja também