парсер html для поиска и замены некоторых значений с помощью java

Я ищу парсер html, который может искать и заменять теги привязки, например

ex
<a href="/ima/index.php">example</a>
to
<a href="http://www.example.com/ima/index.php">example</a>

ОБНОВЛЕНО:

мой код с jsoup, но не работает

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.google.common.collect.ImmutableList;
import com.google.common.net.InternetDomainName;

public class test {
    public static void main(String args[]) throws IOException {

          Document doc = Jsoup.connect("http://www.google.com").get();

          String html =doc.outerHtml().toString();

         // System.out.println(html);

           Elements links = doc.select("a");



            for (Element link : links) {
             String href=link.attr("href");
             if(href.startsWith("http://"))
             {

             }
             else
             {
                 html.replaceAll(href,"http://www.google.com"+href);
             }
            }
            System.out.println(html);
    }

}

person bindhu    schedule 30.01.2011    source источник
comment
Не могли бы вы просто использовать <BASE HREF='http://www.example.com/'> для достижения этого результата? Или вы хотите переопределить содержимое сайта?   -  person D.N.    schedule 30.01.2011
comment
да это можно..извините за глупый вопрос   -  person bindhu    schedule 30.01.2011
comment
Не глупо, а просто надумано. :)   -  person D.N.    schedule 30.01.2011


Ответы (3)


этот код изменяет относительные ссылки в документе на абсолютные ссылки, код использует библиотеку jsoup

private void absoluteLinks(Document document, String baseUri)    {
    Elements links = document.select("a[href]");
    for (Element link : links)  {
        if (!link.attr("href").toLowerCase().startsWith("http://"))    {
            link.attr("href", baseUri+link.attr("href"));
        }
    }
}
person mirek    schedule 19.11.2012

Вы можете сделать это с помощью String.replaceAll() и регулярного выражения, которое соответствует

<a href="/

чтобы найти все относительные ссылки.

html = html.replaceAll("<a href=\"/", "<a href=\"http://www.google.com/\"");
person jhouse    schedule 30.01.2011

Это вопрос по программированию? Если вы ищете готовый файл Java или что-то для этого, вы находитесь не в том месте. Если вы хотите написать что-то подобное, вы можете просто искать экземпляры текста, начинающиеся с a href=/" и заканчивающиеся на /">, а затем вы можете просто проверить значение href, и если это относительный путь (т. е. начинается с /), вы можете просто добавить другой текст в начало.

person Nightfirecat    schedule 30.01.2011