使用java实现Public Suffix提取

ram*_*van 5 java domain-name tld guava

我需要提取网址的顶级域名,我得到了他的 http://publicsuffix.org/index.html

并且java实现在http://guava-libraries.googlecode.com,我找不到任何提取域名的例子

say example..
example.google.com
returns google.com

and bing.bing.bing.com
returns bing.com
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何使用这个库实现一个例子....

Col*_*inD 17

这在我看来就像InternetDomainName.topPrivateDomain()正是你想要的.Guava维护一个公共后缀列表(基于mozilla在publicsuffix.org上的列表),用于确定主机的公共后缀部分是什么......顶级私有域是公共后缀加上它的第一个孩子.

这是一个简单的例子:

public class Test {
  public static void main(String[] args) throws URISyntaxException {
    ImmutableList<String> urls = ImmutableList.of(
        "http://example.google.com", "http://google.com", 
        "http://bing.bing.bing.com", "http://www.amazon.co.jp/");
    for (String url : urls) {
      System.out.println(url + " -> " + getTopPrivateDomain(url));
    }
  }

  private static String getTopPrivateDomain(String url) throws URISyntaxException {
    String host = new URI(url).getHost();
    InternetDomainName domainName = InternetDomainName.from(host);
    return domainName.topPrivateDomain().name();
  }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码打印:

http://example.google.com -> google.com
http://google.com -> google.com
http://bing.bing.bing.com -> bing.com
http://www.amazon.co.jp/ -> amazon.co.jp