Im, использующий HttpClient для доступа к веб-сайту particualr, и ответ, который я получаю, представлен в виде HTML. Какой парсер или метод я должен использовать парсер HTML и получить то, что я хочу от ответа. Примечание: Я использую HttpClient с JavaHTML Parser для ответа - Java
ответ
Использовать jsoup.
jsoup
- это Java-библиотека для работы с реальным HTML-кодом. Он предоставляет очень удобный API для извлечения и управления данными, с использованием лучших методов DOM, CSS и jQuery.
jsoup
реализует спецификацию WHATWG HTML5 и анализирует HTML до того же DOM, что и современные браузеры.
- скрип и анализировать HTML из URL, файла или строки
- Поиск и извлечение данных, используя DOM обхода или CSS селекторы
- манипулировать HTML-элементы, атрибуты и текст
- чистый user- представленный контент против безопасного белого списка, чтобы предотвратить XSS атаку
- выхода аккуратного HTML
jsoup предназначен для борьбы со всеми сортами о f HTML, найденный в wild; от нетронутой и проверенной, до недействительного суп-теля; jsoup будет создать разумное дерево разбора.
Я бы дал htmlcleaner a.
HTMLCleaner - это библиотека Java, используемая для безопасного анализа и преобразования любого HTML, найденного в Интернете, в хорошо сформированный XML. Он разработан как маленький, быстрый, гибкий и независимый. HtmlCleaner может использоваться в Java-коде, как инструмент командной строки или как задача Ant. Результатом разбора является легкая модель объекта документа, которая может быть легко преобразована в такие стандарты, как DOM или JDom, или сериализована на XML-вывод различными способами (компактный, довольно печатный и т. Д.).
Вы можете использовать XPath
с htmlcleaner, чтобы получить содержимое внутри XML/HTML tags.Here хороший
пример Xpath Example
Пример кода с jsoup и Java8:
// Imports:
...
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
...
// Execute the GET request:
...
HttpClient clientGet = HttpClientBuilder.create().build();
HttpGet get = new HttpGet(url);
HttpResponse res = clientGet.execute(get);
// Use jsoup to parse the html response:
// E.g. find all links with reference to myapp:
// <a href="myapp">HelloWorldApp</a>
Document doc = Jsoup.parse(IOUtils.toString(res.getEntity().getContent(), StandardCharsets.UTF_8));
Elements links = doc.select("a[href~=myapp]");
for (Element link : links)
String appName = link.html();
...
возможно дубликат из [Какой Html Parser лучше?] (http://stackoverflow.com/questions/2168610/which-html-parser-is-best) –
Я поддержал оба. Разбор html в библиотеке Java просто ужасен; все остальное было бы лучше. – Bill