Форматирование URL-адресов стало проще?

#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».