Используется, среди прочего, Element#absUrl()
, чтобы вы могли получить (предполагаемый) абсолютный URL-адрес <a href>
, <img src>
, <link href>
, <script src>
и т. Д. Например,
for (Element link : document.select("a")) {
System.out.println(link.absUrl("href"));
}
Это очень полезно, если вы хотите загрузить и / или проанализировать связанные ресурсы.
Во 2-й версии parse () что означает «преобразование относительных URL-адресов в абсолютные URL-адреса, возникающие до того, как HTML объявит тег <base href>
»? Что если тег <base href>
никогда не появится на странице?
Некоторые (плохие) веб-сайты могут объявить <link>
или <script>
с относительным URL-адресом перед тегом <base>
. Или, если нет средства для тега <base>
, тогда только указанный baseUri
будет использоваться для разрешения относительных URL-адресов всего документа.
Какова цель абсолютного определения URL? Почему Jsoup нужно найти абсолютный URL?
Чтобы вернуть правильный URL на Element#absUrl()
. Это чисто для удобства конечного пользователя. Jsoup не нуждается в этом, чтобы успешно разобрать HTML самостоятельно.
Наконец, но самое главное: является ли baseUri полным URL-адресом HTML-страницы (как указано в оригинальной документации) или это базовый URL-адрес HTML-страницы?
Бывший. Если последнее, то документация будет врать. baseUri
не следует путать с <base href>
.