Загрузка веб-страницы

Java:
Загрузка веб-страницы

Как это сделать:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class WebPageDownloader {
    public static void main(String[] args) {
        String urlStr = "http://example.com";
        try {
            URL url = new URL(urlStr);
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Пример вывода может выглядеть так:

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    ...
</head>
...
</html>

Погружение

В прошлом загрузка веб-страницы была элементарной задачей — HTTP был простым, веб-сайты состояли в основном из статичного HTML. Современный веб сложен — подумайте о HTTPS, содержимом, управляемом JavaScript, и обилии AJAX.

Для статического содержимого java.net.URL и java.net.HttpURLConnection — это прямые выборы — без излишеств, просто работает. Но если вы нацелены на сайты, полные динамического контента, загружаемого с помощью JavaScript, эти классы в одиночку справиться не смогут, и вы будете смотреть в сторону таких инструментов, как Selenium или HtmlUnit.

Не забывайте, что выбор правильного инструмента также зависит от того, что вам нужно делать со страницей после её загрузки. Разбор HTML? Jsoup ваш выбор. Выполнение JavaScript? Рассмотрите вариант с безголовым браузером. Классы java.net — лишь верхушка айсберга, но они подходят для быстрых задач или сбора данных со старомодных веб-страниц.

Помните о политике вежливости: не атакуйте сайт серией быстрых запросов, иначе вы рискуете быть забаненым. И убедитесь, что вы действуете в соответствии с рекомендациями robots.txt веб-сайта.

Смотрите также

  • Библиотека Jsoup для разбора и извлечения HTML.
  • Selenium WebDriver для более сложных задач, включая выполнение JavaScript.
  • Руководство по HttpURLConnection для тех, кто хочет узнать тонкости работы с HTTP в Java.
  • HtmlUnit, «браузер без графического интерфейса для программ на Java», отлично подходит для страниц с интенсивным использованием JavaScript.