Попробуйте использовать библиотеку разбора HTML, а затем найдите теги <a>
в документе HTML.
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Elements links = doc.select("a[href]"); // a with href
не все URL-адреса содержатся в тегах, некоторые являются текстовыми, а некоторые - ссылками или другимитеги
Вы не должны сканировать исходный код HTML, чтобы достичь этого.
В результате вы получите элементы ссылки, которые не обязательно находятся в тексте.страницы, т. е. вы можете получить «ссылки» JS-скриптов на странице, например.
Лучше всего использовать инструмент, созданный для работы.
Вам следует захватить HTML-теги и указать наиболее вероятные из них, на которых есть «ссылки» (скажем: <h1>
, <p>
, <div>
и т. Д.).Синтаксические анализаторы HTML предоставляют функции, подобные регулярным выражениям, для фильтрации через содержимое тегов, что похоже на вашу логику "начинается с HTTP".
[attr^=value]
, [attr$=value]
, [attr*=value]:
элементы с атрибутами, которые начинаются с, заканчиваются или содержат значение, например select("[href*=/path/]")
См .: jSoup .