![]() |
Regexp java или иной библиотеки для парсинга HTML
Здравствуйте, встала задача, написать класс , который будет парсить html страницу со, скорее всего кривым кодом ( то есть парсеры типа DOM, я так мыслю отсекаются ) ,
задача, вытянуть из документа все урлы. но вот проблема, самым очевидным решением принял поиск по совпадению с регулярным выражением ( NB у меня опыта практически ноль ) и когда хочу пропарсить с помощью java.util.regexp - не получается составить выражение, а при помощи org.apache.oro.text.regex. получаю java.lang.ArrayIndexOutOfBoundsException, Люди добрые не пагубите помогите найти оптимальный выход их этой ситуации... вот что наваял Код:
|
Flick
берем tidy, подключаем его, кормим ему ваш не валидный HTML на выходе получаем дом объект, выдираем все ссылки. |
Vlad Drakula,
Вот в том-то и дело, что jTidy не скушает не валидный код страницы, а задача стоит выцепить как можно больше урлов, ( а на странице урл же может выводиться скриптом, не обязательно в виде валидной html-ной ссылки ) ( я пытался заюзать и jTidy и Xerces - ничиво не вышло ). Помогите составить regex хоть на чем нибудь......awk perl java |
хотя бы так
[Hh][Tt][Tt][Pp]://[^ "']* блоки <script> стоит исключить - там могут быть "обрывки" адресов |
Flick
1) тогда бы почему бы вам просто не использовать движок браузера? 2) не знаю как jTidy, но я использую tidy как раз чтобы делать не валидный HTML валидным, tidy конечно не со всем справляется но в большинстве случаев работает на ура. |
путь с Tidy - тернистее и длинее, сложнее,
путь с regexp'ом - , оказался быстрее проще ( в общем случае ).... всем спасибо... |
Время: 02:00. |
Время: 02:00.
© OSzone.net 2001-