Java获取URL中的顶级域名domain的工具类-阿里云开发者社区

开发者社区> 技术小哥哥> 正文

Java获取URL中的顶级域名domain的工具类

简介:
+关注继续查看

方式一:

复制代码
 1 import java.net.MalformedURLException;
 2 import java.net.URL;
 3 import java.util.Arrays;
 4 import java.util.HashSet;
 5 import java.util.Set;
 6 import java.util.regex.Pattern;
 7 
 8 public class URLUtil {
 9 
10     private final static Set<String> PublicSuffixSet = new HashSet<String>(
11             Arrays.asList(new String(
12                     "com|org|net|gov|edu|co|tv|mobi|info|asia|xxx|onion|cn|com.cn|edu.cn|gov.cn|net.cn|org.cn|jp|kr|tw|com.hk|hk|com.hk|org.hk|se|com.se|org.se")
13                     .split("\\|")));
14 
15     private static Pattern IP_PATTERN = Pattern.compile("(\\d{1,3}\\.){3}(\\d{1,3})");
16 
17     /**
18      * 获取url的顶级域名
19      * @param url
20      * @return
21      */
22     public static String getDomainName(URL url) {
23         String host = url.getHost();
24         if (host.endsWith(".")){
25             host = host.substring(0, host.length() - 1);
26         }
27         if (IP_PATTERN.matcher(host).matches()){
28             return host;
29         }
30 
31         int index = 0;
32         String candidate = host;
33         for (; index >= 0;) {
34             index = candidate.indexOf('.');
35             String subCandidate = candidate.substring(index + 1);
36             if (PublicSuffixSet.contains(subCandidate)) {
37                 return candidate;
38             }
39             candidate = subCandidate;
40         }
41         return candidate;
42     }
43 
44     /**
45      * 获取url的顶级域名
46      * @param url
47      * @return
48      * @throws MalformedURLException
49      */
50     public static String getDomainName(String url) throws MalformedURLException {
51         return getDomainName(new URL(url));
52     }
53 
54     /**
55      * 判断两个url顶级域名是否相等
56      * @param url1
57      * @param url2
58      * @return
59      */
60     public static boolean isSameDomainName(URL url1, URL url2) {
61         return getDomainName(url1).equalsIgnoreCase(getDomainName(url2));
62     }
63 
64     /**
65      * 判断两个url顶级域名是否相等
66      * @param url1
67      * @param url2
68      * @return
69      * @throws MalformedURLException
70      */
71     public static boolean isSameDomainName(String url1, String url2)
72             throws MalformedURLException {
73         return isSameDomainName(new URL(url1), new URL(url2));
74     }
75     
76     public static void main(String[] args) throws Exception {
77         String urlStr = "http://news.hexun.com/2017-09-23/190978248.html";
78         getDomainName(urlStr);
79         getDomainName(new URL(urlStr));
80     }
81 
82 }
复制代码

方式二:

复制代码
 1 import java.net.MalformedURLException;
 2 import java.net.URL;
 3 import java.util.regex.Matcher;
 4 import java.util.regex.Pattern;
 5 
 6 public class DomainUtils {
 7     /**
 8      * 获取url的顶级域名
 9      * @param
10      * @return
11      */
12     public static String getTopDomain(String url){
13         try{
14             //获取值转换为小写
15             String host = new URL(url).getHost().toLowerCase();//news.hexun.com
16             Pattern pattern = Pattern.compile("[^\\.]+(\\.com\\.cn|\\.net\\.cn|\\.org\\.cn|\\.gov\\.cn|\\.com|\\.net|\\.cn|\\.org|\\.cc|\\.me|\\.tel|\\.mobi|\\.asia|\\.biz|\\.info|\\.name|\\.tv|\\.hk|\\.公司|\\.中国|\\.网络)");
17             Matcher matcher = pattern.matcher(host);
18             while(matcher.find()){
19                 return matcher.group();
20             }
21         }catch(MalformedURLException e){
22             e.printStackTrace();
23         }
24         return null;
25     }
26     public static void main(String[] args) {
27         System.out.println(getTopDomain("http://news.hexun.com/2017-09-23/190978248.html"));//hexun.com
28 
29     }
30 }
复制代码

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/7594305.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JAVA获取CLASSPATH路径
ClassLoader提供了两个方法用于从装载的类路径中取得资源:        public URL getResource(String name);         public InputStream getResourceAsStream(String name);        这里name是资源的类路径,它是相对与“/”根路径下的位置。
831 0
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
38 0
java获取路径
假设系统的路径为:E:\Program Files\myworkspace\EngravedCode (1)System.out.println(System.getProperty("user.
512 0
Docker编排工具Docker-compose
当然我们已经了解了Docker基础使用,当然我们要全面Docker化还有一段路要走,今天给大家带来的是编排工具,应为复杂度使用docker run 容器的时候需要配置很多内容比如端口映射,磁盘挂载,环境变量等,全部在命令中格式麻烦也不好保存,并且如果多个容器之前需要关联也特别麻烦,所以有了Docker三剑客之一的Docker-compose出面来解决这个问题.
97 0
Java 获取类成员方法信息
一、基本的数据类型,void关键字等都存在类类型 Class c = 基类.class (int,String,double,void等) Class c1 = int.class; int的类类型 Class c2 = String.
664 0
艾伟也谈项目管理,敏捷教练的工具箱
  学习并不是简简单单的阅读和浏览,而是一个积累的过程,一个通过持续的学习,对自己的知识体系不断丰富、索引的过程。接下来我会从四个方面入手分享我的经验。   高质量的信息源和高效的学习   Google是一个很好的工具,通过它,我们可以找到很多很好的资源,但前提是必须先知道要搜索的关键字,没有关键字,就不知道该查什么。
1032 0
Progress进度查看器是一个可以显示Linux命令的工具
Progress进度查看器是一个可以显示Linux命令的工具
385 0
2010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载