Я хотел бы получить HTML-код веб-страницы и сохранить его в String
, чтобы я мог обработать его. Кроме того, как мне справиться с различными типами сжатия.
Как я могу это сделать с помощью Java?
java
http
compression
jjnguy
источник
источник
Ответы:
Вот протестированный код с использованием класса URL Java . Я бы порекомендовал лучше, чем я здесь, обрабатывать исключения или передавать их в стек вызовов.
источник
DataInputStream
наBufferedReader
. И заменить"dis = new DataInputStream(new BufferedInputStream(is));"
на"dis = new BufferedReader(new InputStreamReader(is));"
InputStreamReader
?Я бы использовал приличный парсер HTML, такой как Jsoup . Тогда это так же просто, как:
Он полностью прозрачно обрабатывает GZIP, фрагментированные ответы и кодировку символов. Он также предлагает больше преимуществ, таких как обход HTML и манипулирование с помощью селекторов CSS, как это может делать jQuery. Вам нужно только взять его как
Document
, а не какString
.Вы действительно не хотите запускать базовые методы String или даже регулярное выражение в HTML для его обработки.
Смотрите также:
источник
;)
NetworkOnMainThreadException
Ответ Билла очень хорош, но вы можете что-то сделать с запросом, например, сжатие или пользовательские агенты. В следующем коде показано, как можно выполнять различные типы сжатия ваших запросов.
Чтобы также установить пользовательский агент, добавьте следующий код:
источник
Что ж, вы можете использовать встроенные библиотеки, такие как URL и URLConnection , но они не дают большого контроля.
Лично я бы выбрал библиотеку Apache HTTPClient .Изменить: HTTPClient был настроен на конец жизни Apache. Замена: Компоненты HTTP
источник
Все вышеупомянутые подходы не загружают текст веб-страницы так, как он выглядит в браузере. в наши дни много данных загружается в браузеры через скрипты на html-страницах. ни один из вышеупомянутых методов не поддерживает скрипты, они просто загружают только текст html. HTMLUNIT поддерживает javascripts. поэтому, если вы хотите загрузить текст веб-страницы так, как он выглядит в браузере, вам следует использовать HTMLUNIT .
источник
Скорее всего, вам потребуется извлечь код с защищенной веб-страницы (протокол https). В следующем примере файл html сохраняется в папку c: \ temp \ filename.html Наслаждайтесь!
источник
В системе Unix / Linux вы можете просто запустить «wget», но это не вариант, если вы пишете кроссплатформенный клиент. Конечно, это предполагает, что вы действительно не хотите много делать с данными, которые вы загружаете между моментом их загрузки и их попаданием на диск.
источник
Jetty имеет HTTP-клиент, который можно использовать для загрузки веб-страницы.
В этом примере печатается содержимое простой веб-страницы.
В учебнике « Чтение веб-страницы в Java» я написал шесть примеров программной загрузки веб-страницы на Java с использованием URL, JSoup, HtmlCleaner, Apache HttpClient, Jetty HttpClient и HtmlUnit.
источник
Получите помощь от этого класса, он получит код и отфильтрует некоторую информацию.
источник
Для этого используйте мощный файл Files.copy NIO.2 (InputStream in, Path target):
источник
источник