#java #html #parsing #jsoup #html-parsing
#java #HTML #синтаксический анализ #jsoup #html-синтаксический анализ
Вопрос:
Я пытаюсь проанализировать HTML-страницу, полученную через прокси, поэтому у меня есть:
HttpUriRequest request = new HttpGet(url);
HttpResponse httpResponse = HttpClient.execute(request);
InputStream stream = httpResponse.getEntity().getContent();
String myHtml = IOUtils.toString(stream, "UTF-8");
Document doc = Jsoup.parse(myHtml);
Проблема в том, что html, проанализированный и настроенный как документ, полностью отличается от полученного html. у меня есть много тегов div, которые перемещены.
пример :
<html>
<head>
</head>
<body>
<div id="parent">
<div id="header"> </div>
<div id="content"> </div>
<div id="footer"> </div>
</div>
</body>
</html>
Стать :
<html>
<head>
</head>
<body>
<div id="parent">
<div id="header"> </div>
<div id="content"> </div>
</div>
<div id="footer"> </div>
</body>
</html>
Нижний колонтитул перемещается из родительского div.
Я знаю, что Jsoup основан на рекомендациях W3C, и я думаю, что исходный html-код недействителен, но мне нужно сохранить DOM неизменным.
Я пытался использовать параметр Parser.XMLParser(), но результаты все те же.
У кого-нибудь есть идея избежать всех изменений, внесенных Jsoup? или другой анализатор html для выполнения этой работы?
Комментарии:
1. Это очень трудно определить, не видя вашего ввода и вывода.
2. Я отредактирую сообщение, но представьте, что div перемещен в другое место в DOM или перемещен из родительского div
3. Что такое
orginal
? Это строка, которую вы читаете из flie, какого-то веб-соединения?4. @TDG это HttpResponse, я отредактирую это, спасибо
5. Если исходники недопустимы, у инструментов / библиотек есть два варианта: исправить исходный код или выдать ошибку / исключение. Поэтому очистите исходный код самостоятельно (обработайте строку) перед синтаксическим анализом с помощью jsoup или реструктурируйте в jsoup в соответствии с предполагаемой структурой.