Попытка разобрать ссылки в списке каталогов HTML с использованием Java - PullRequest
1 голос
/ 04 мая 2011

Пожалуйста, кто-нибудь может помочь мне разобрать эти ссылки со страницы HTML

Я хочу проанализировать, используя слово " handle ", которое часто встречается в этих ссылках.

Я использую команду [Pattern pattern = Pattern.compile("<a.+href=\"(.+?)\"");], но она анализирует все ссылки href на странице.

Есть предложения?
Спасибо

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Ваше регулярное выражение смотрит на ВСЕ <a href... теги.«handle» всегда используется как «/ dspace / handle» и т. д., так что вы можете использовать что-то вроде этого, чтобы очистить URL, которые вы ищете:

Pattern pattern = Pattern.compile("<a.+href=\"(/dspace/handle/.+?)\"");
1 голос
/ 04 мая 2011

Похоже, ваше регулярное выражение делает что-то не так.Вместо

Pattern pattern = Pattern.compile("<a.+href=\"(.+?)\"");

Попробуйте:

Pattern pattern = Pattern.compile("<a\\s+href=\"(.+?)\"");

'. +.' В вашем первом шаблоне соответствует любому символу хотя бы один раз.Если вы намеревались установить символ пробела, используйте вместо этого '\ s +'.

Следующий код прекрасно работает:

    String s = "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/2299\"/> " +
            "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/3154\" /> " +
            "<a href=\"http://nemertes.lis.upatras.gr/dspace/handle/123456789/3158\"/>";

    Pattern p = Pattern.compile("<a\\s+href=\"(.+?)\"", Pattern.MULTILINE);
    Matcher m = p.matcher(s); 
    while(m.find()){
        System.out.println(m.start()+" : "+m.group(1));
    }

output:

0 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/2299
72 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/3154
145 : http://nemertes.lis.upatras.gr/dspace/handle/123456789/3158
...