Каков самый простой способ получить HTML-контент веб-сайта в строку без использования какой-либо внешней библиотеки?




В настоящее время я использую это:
String content = null;
URLConnection connection = null;
try {
connection = new URL("http://www.google.com").openConnection();
Scanner scanner = new Scanner(connection.getInputStream());
scanner.useDelimiter("\Z");
content = scanner.next();
scanner.close();
}catch ( Exception ex ) {
ex.printStackTrace();
}
System.out.println(content);
Но не уверен, есть ли способ лучше.
Почему "\\ Z"? Разве это не EOF только для Windows? Я здесь просто догадываюсь.
Почему вы используете "\\ Z"? Что оно делает? Пробовал без него, не вышло.
@MaxHusiv Я думаю, это потому, что, если вы не укажете разделитель, scanner.next () будет просто проходить весь символ HTML за символом, но если вы используете разделитель, которого нет в HTML, scanner.next () возвращает все.
Я только что оставил этот пост в другой вашей беседе, хотя то, что у вас есть выше, тоже может сработать. Я не думаю, что одно из них было бы проще другого. Доступ к пакетам Apache можно получить, просто используя import org.apache.commons.HttpClient в верхней части кода.
Обновлено: забыл ссылку;)
Видимо надо еще и JAR-файл установить :)
Это хорошо сработало для меня:
URL url = new URL(theURL);
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1) {
buffer.append((char)ptr);
}
Не уверен, являются ли другие предоставленные решения более эффективными или нет.
Разве вам не нужно включать следующее? импорт java.io. * импорт java.net. *
Конечно, но это ядро Java, очень простое. Что касается фактического кода, операторы импорта для ясности опущены.
после while вы также должны отображать содержимое буфера! или напишите метод там, где читаете!
обязательно close входной поток
Я предлагаю более простое решение, хотя и не ванильную Java. Используйте Groovy ;-)
String siteContent = new URL("http://www.google.com").text
Это не библиотека, а инструмент под названием curl, который обычно устанавливается на большинстве серверов, или вы можете легко установить его в ubuntu с помощью
sudo apt install curl
Затем загрузите любую html-страницу и сохраните ее в локальном файле, как в примере.
curl https://www.facebook.com/ > fb.html
Вы получите html-страницу домашней страницы. Вы также можете запустить ее в своем браузере.
возможный дубликат stackoverflow.com/questions/238547/…