У меня есть строка как исходный код HTML. Я хочу получить только ссылки из этой строки и поместить эти ссылки в ArrayList. Как вы знаете, я хочу получить строки между <a href="THE LINK I WANT">
Но я хочу сделать это без использования каких-либо внешних библиотек. Как я могу сделать это с помощью простого алгоритма, используя классы и циклы String? Спасибо!Получение ссылок из html исходного кода
ответ
Я нашел ответ !!!!!
public ArrayList<String> getLinks() {
String link = "";
for(int i = 0; i<url.length()-6; i++) {
if(url.charAt(i) == 'h' && url.charAt(i+1) == 'r') {
for(int k = i; k<url.length();k++){
if(url.charAt(k) == '>'){
link = url.substring(i+6,k-1);
links.add(link);
// Break the loop
k = url.length();
}
}
}
}
return links;
Java Regex API
не является подходящим инструментом для достижения вашей цели. Используйте эффективные, безопасные и хорошо проверенные инструменты высокого уровня, упомянутые в других ответах.
Если вопрос касается скорее Regex API, чем проблемы в реальной жизни (обучение целей, например) - вы можете сделать это с помощью следующего кода:
String html = "foo <a href='link1'>bar</a> baz <a href='link2'>qux</a> foo";
Pattern p = Pattern.compile("<a href='(.*?)'>");
Matcher m = p.matcher(html);
while(m.find()) {
System.out.println(m.group(0));
System.out.println(m.group(1));
}
и вывод:
<a href='link1'>
link1
<a href='link2'>
link2
Обратите внимание, что ленивый/неохотный квалификатор *? должен использоваться, чтобы уменьшить группировку на единый тег. Группа 0 - это весь матч, группа 1 - следующее групповое совпадение (следующая пара скобок).
ПРИМЕЧАНИЕ, чтобы рассмотреть:
Использование регулярных выражений, чтобы вытащить значения из HTML всегда ошибка. Синтаксис HTML намного сложнее, чем он может появиться, и очень легко для страницы вырвать даже очень сложное регулярное выражение.
Вместо этого используйте HTML Parser. См. Также What are the pros and cons of the leading Java HTML parsers?
Поскольку я изложил свой вопрос, я не хочу использовать внешние библиотеки. Я нашел ответ. Тем не менее, спасибо за ваш ответ – El3ctr0n1c4
Ваш метод, как указано в вашем ответе, - это всего лишь обходной путь. Не правильный метод .. !! .. Вы можете хотя бы использовать «регулярное выражение», чтобы решить вашу проблему .. !! (и его не внешняя библиотека) –
На самом деле это не обязательно правильно, потому что я хочу, чтобы вы просто простой алгоритм. Я решил, хотя: D – El3ctr0n1c4
- 1. Получение исходного кода HTML из webView
- 2. Получение html исходного кода в php
- 3. Получение исходного кода HTML. UF URI
- 4. Получение исходного кода iframe
- 5. Получение исходного кода из двоичного кода
- 6. Получение исходного местоположения исходного кода JavaScript?
- 7. Получение исходного кода html текущей веб-страницы
- 8. Получение исходного кода Android
- 9. Получение исходного HTML-кода из WebView в Cocoa
- 10. Получение исходного HTML-кода из URL-адреса, который перенаправляет
- 11. Получение нескольких тегов из исходного кода html в Objective-C
- 12. Получение родительского исходного кода из src attributte
- 13. Извлечение ссылок с регулярным выражением из исходного кода; Python
- 14. Получение элемента ссылки youtube из исходного кода
- 15. Получение конкретной ссылки из исходного кода Python
- 16. Получение исходного кода из объектного файла
- 17. Отображение исходного кода HTML
- 18. Я хочу GetText из HTML исходного кода
- 19. получение исходного кода ip scapy
- 20. Получение исходного кода из кода C, скомпилированного с параметрами отладки
- 21. Получение исходного кода html с URL-адресом в приложении android
- 22. Получение «альт» из HTML-кода
- 23. Получение данных из html-кода
- 24. Получение генерированного исходного кода страницы в блокноте
- 25. Исходный код исходного кода HTML?
- 26. Получение ссылок с HTML-страницы
- 27. Получение исходного текста из JTextPane
- 28. получение второй новейшей версии исходного кода
- 29. Извлечение ссылок из источника HTML
- 30. HttpClient не возвращает завершенный HTML исходного кода
Почему вы не хотите использовать библиотеку разбора HTML для этого? Выполнение этой задачи без библиотеки будет изобретать чрезвычайно сложное колесо. –
Потому что это задание, и мой инструктор хочет, чтобы я сделал это с помощью простого алгоритма. Это просто? – El3ctr0n1c4
Это не так сложно, вы можете выполнить поиск по html для '', в этом случае нет 'href', и вам нужно снова начать ищет '