реализация извлечения публичного суффикса с использованием Java - PullRequest
5 голосов
/ 27 января 2011

Мне нужно извлечь верхний домен URL, и я получил его 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

Может ли кто-нибудь сказать мне, как я могу реализовать с помощью этой библиотеки с примером ....

Ответы [ 3 ]

17 голосов
/ 27 января 2011

Это выглядит как 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();
  }
}

Запуск этого кода печатает:

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
2 голосов
/ 15 июля 2014

Недавно я реализовал публичный список суффиксов API :

PublicSuffixList suffixList = new PublicSuffixListFactory().build();

assertEquals(
    "google.com", suffixList.getRegistrableDomain("example.google.com"));

assertEquals(
    "bing.com", suffixList.getRegistrableDomain("bing.bing.bing.com"));

assertEquals(
    "amazon.co.jp", suffixList.getRegistrableDomain("www.amazon.co.jp"));
1 голос
/ 27 января 2011

РЕДАКТИРОВАТЬ: Извините, я был слишком быстро.Я не думал о совместной работеco.uk и так далее.Вам нужно будет получить список возможных TLD откуда-то.Вы также можете взглянуть на http://commons.apache.org/validator/ для проверки TLD.

Я думаю, что-то вроде этого должно работать: но, возможно, существует какая-то функция Java-Standard.

...