(
Arrays.asList(new String(
"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")
.split("\\|")));
private static Pattern IP_PATTERN = Pattern
.compile("(\\d{1,3}\\.){3}(\\d{1,3})");
* 获取url的顶级域名
* @param url
* @return
public static String getDomainName(URL url) {
String host = url.getHost();
if (host.endsWith("."))
host = host.substring(0, host.length() - 1);
if (IP_PATTERN.matcher(host).matches())
return host;
int index = 0;
String candidate = host;
for (; index >= 0;) {
index = candidate.indexOf('.');
String subCandidate = candidate.substring(index + 1);
if (PublicSuffixSet.contains(subCandidate)) {
return candidate;
candidate = subCandidate;
return candidate;
* 获取url的顶级域名
* @param url
* @return
* @throws MalformedURLException
public static String getDomainName(String url) throws MalformedURLException {
return getDomainName(new URL(url));
* 判断两个url顶级域名是否相等
* @param url1
* @param url2
* @return
public static boolean isSameDomainName(URL url1, URL url2) {
return getDomainName(url1).equalsIgnoreCase(getDomainName(url2));
* 判断两个url顶级域名是否相等
* @param url1
* @param url2
* @return
* @throws MalformedURLException
public static boolean isSameDomainName(String url1, String url2)
throws MalformedURLException {
return isSameDomainName(new URL(url1), new URL(url2));
import java.net.MalformedURLException;import java.net.URL;import java.util.Arrays;import java.util.HashSet;import java.util.Set;import java.util.regex.Pattern;public class URLUtil { private
顶级
域名
从给定的
URL
中
提取
顶级
域(TLD)。 TLD名称列表取自。
(可选)在不存在的TLD上引发异常或以静默方式失败(如果fail_silently参数设置为True)。
Python 3.6、3.7、3.8和3.9。
可在“文档”上找到。
PyPI上的最新稳定版本:
pip install tld
或来自GitHub的最新稳定版本:
pip install https://github.com/barseghyanartur/tld/archive/stable.tar.gz
除以下示例外,请参见jupyter笔记本工作簿文件。
从给定的
URL
获取
TLD名称作为字符串
from tld import get_tld
get_tld ( "http://www.google.co.uk" )
# 'co.uk'
get_tl
1 import
java
.net.Malformed
URL
Exception;
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;...
String
url
= "http://anotherbug.blog.china
java
world.com/entry/4545/0/";
Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)",Pattern.CASE_INSENSITIVE);
Matcher m...
国家/地区
顶级
域名
(ccTLD:Country Code Top Level
Dom
ain
)
(2)generic:
通用
顶级
域名
(gTLD:generic Top Level
Dom
ain
)
(3)generic-restricted:
有限制的通用
顶级
域名
(需要审核)
(4...
//
获取
域名
的函数
//包含全部的cn
域名
后缀
static String[] xCN = { ".com.cn", ".net.cn", ".gov.cn", ".edu.cn",
".org.cn", ".mil.cn
springMVC的执行流程
(1)用户发送请求至前端控制器DispatcherServlet;
(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求
获取
Handle;
(3)处理器映射器根据请求
url
找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;
(5)HandlerAdapter 经过适配调用 具体处
源代码package edu.uci.ics.crawler4j.
url
;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import
java
.io.BufferedReader;
import
java
.io.InputStream;
import
java
.io.InputStreamReader;
import
java
.net
[code="
java
"]//
获取
域名
的函数
//包含全部的cn
域名
后缀
static String[] xCN = { ".com.cn", ".net.cn", ".gov.cn", ".edu.cn",
".org.cn", ".mil.cn", ".ac.cn", ".bj.cn", ".sh.c
2. 使用正则表达式来匹配和提取
域名
部分。
-
域名
通常由以下部分组成:协议(可选),
域名
,端口号(可选)。
- 一个可能的正则表达式模式可以是:`/^((http[s]?|ftp):\/)?\/?([^:\/\s]+)(:[0-9]+)?/i`。
- 在这个模式
中
:
- `/`是正则表达式的起始和结束符号。
- `^`表示字符串的起始位置。
- `(http[s]?|ftp)`匹配http、https或ftp协议。
- `:`、`\/`、`?`等字符在正则表达式
中
有特殊的含义,所以需要用`\`进行转义。
- `[^:\/\s]+`匹配任意不是`:`、`/`和空格的字符。
- `()`将匹配的子串捕获。
- `:`表示端口号的开始。
- `[0-9]+`匹配一位或多位数字。
- `?`表示前面的元素是可选的。
3. 使用
Java
Script
中
的正则表达式方法(如`match()`)来执行匹配操作并提取
域名
部分。
- 例如,`var
url
= "http://www.example.com:8080/path/to/file.html";`表示
URL
字符串。
- `var
dom
ain
=
url
.match(/^((http[s]?|ftp):\/)?\/?([^:\/\s]+)(:[0-9]+)?/i)[3];`可以将
域名
部分提取出来。
4. 最后,可以打印或使用
域名
部分进行其他操作。
- 例如,`console.log(
dom
ain
);`可以将
域名
部分打印到控制台上。
这样,通过使用正则表达式进行匹配和提取,就能够截取
url
中
的
域名
部分了。