Jsoup: разная структура документа при загрузке HTML из URL и из файла

Я использую Jsoup для получения данных с сайта. Мне нужно парсить страницу как по URL, так и из локального HTML-файла. Проблема в том, что содержимое объекта Document, полученного с помощью Jsoup.connect() и Jsoup.parse() - разное.

При использовании:

Document pageDocument = Jsoup.connect(pageUrl)

Целевой фрагмент HTML выглядит так:

<div class="rcol" style="width:700px; padding:0 0 0 6px;">
   //целевые данные
</div>

Но при использовании:

Document pageDocument = Jsoup.parse(htmlFile, "UTF-8", baseUrl)

Этот же фрагмент выглядит как-то так:

<a class="attribute-value">rcol</a>" <span class="attribute-name">style</span>="<a class="attribute-value">width:700px; padding:0 0 0 6px;</a>

Соотвествено, весь мой дальнейший код вида:

getElementsByClass("rcol")

который работает для ссылки, на файле превращается в тыкву, потому что этот же класс теперь называется почему-то не rcol, а attribute-value

ВАЖНО: содержимое HTML-файла, который я скачивал вручную и потом передавал в Jsoup.parse(), полностью (не совсем, см. UPD) идентично HTML, получаемому по ссылке с помощью Jsoup.connect(). Различия появляются уже в выводе Jsoup.parse(). То есть в данном случае проблема не на стороне севера, который возвращает другой файл из-за ругого user-agent, куки и т.п., а именно в работе метода Jsoup.parse(), который искажает HTML при создании объекта Document.
ВОПРОС: как заставить Jsoup.parse() не коверкать HTML?

UPD: заметил, что длина исходного кода страницы в браузере и длина скачаного файла отличается на одну строчку. Похоже, что при скачивании потерялся закрывающий тег или что-то подобное. Попробовал вручную создать HTML-файл, сделав ctrl-c, ctrl-v исходного кода станицы и мое предположение подтвердлилось - созданный таким образом файл обрабатывается корректно.
Я все еще не знаю почему так происходит и хотел бы узнать. Но если вы в будущем читаете этот пост, а ответ так и не был найден - имейте в виду и еще раз перепрверьте структуру HTML.


Ответы (0 шт):