#java #html #string #jsoup
#java #HTML #строка #jsoup
Вопрос:
Мне просто интересно, есть ли более общий способ сделать это. Я очищаю веб-страницу и получаю все ссылки на нее, проблема в том, что многие из них относительны
e.g /index.html e.g /home.index.html
До сих пор я пытался объяснить это, добавив домашний URL. e.g .index.html
становится www.example.com/index.html
etc. (Мне нужно это сделать, потому что я хочу подключаться к каждой ссылке с помощью HttpClient)
Моя проблема в том, что при этом нужно учитывать так много. Есть ли более простой способ сделать это, которого мне не хватает.
Заранее спасибо 🙂
ps I can get all the links just wondering if jsoup or httpclient
has a better way of formatting the URLs.
Ответ №1:
ДА. В документе JSoup указано для вашего варианта использования:
Проблема У вас есть HTML-документ, содержащий относительные URL-адреса, которые необходимо преобразовать в абсолютные URL-адреса.
Решение
Убедитесь, что вы указали базовый URI при разборе документа (который неявно используется при загрузке с URL-адреса), и используйте префикс abs: attribute для разрешения абсолютного URL-адреса из атрибута:
Document doc = Jsoup.connect("http://jsoup.org").get(); Element link = doc.select("a").first(); String relHref = link.attr("href"); // == "/" String absHref = link.attr("abs:href"); // "http://jsoup.org/"
Источник: документ JSoup
Комментарии:
1. Спасибо за ответ, но как это меняет ссылку «index.html » чтобы «www.example.com/index.html «?
2. Из того, что я прочитал, если вы укажете корневой URL-адрес, то все ссылки, которые являются относительными в вашем документе, будут автоматически иметь префикс домена при запросе с помощью «abs: href».