给定网站地址,例如
http://www.example.com/page1/#
https://subdomain.example2.co.uk/asdf?retrieve=2
如何返回根域R
,例如
example.com
example2.co.uk
出于我的目的,我将根域定义为具有结构
example_name.public_suffix
其中 example_name 不包括“www”,而 public_suffix 在此处的列表中:
https://publicsuffix.org/list/effective_tld_names.dat
这仍然是基于正则表达式的最佳解决方案吗:
https://stackoverflow.com/a/8498629/2109289
R
根据公共后缀列表解析根域的内容怎么样,例如:
http://simonecarletti.com/code/publicsuffix/
已编辑:根据理查德的评论添加额外信息
使用XML::parseURI
似乎返回第一个“//”和“/”之间的东西。例如
> parseURI("http://www.blog.omegahat.org:8080/RCurl/index.html")$server
[1] "www.blog.omegahat.org"
因此,问题归结为拥有一个R
可以从 URI 返回公共后缀的函数,或者在公共后缀列表上实现以下算法:
- 根据所有规则匹配域并记下匹配的规则。
- 如果没有规则匹配,则优先规则为“*”。
- 如果多个规则匹配,则主要规则是例外规则。
- 如果没有匹配的异常规则,则优先规则是标签最多的规则。
- 如果现行规则是例外规则,则通过删除最左边的标签来修改它。
- 公共后缀是来自域的一组标签,这些标签直接匹配现行规则的标签(由点连接)。
- 已注册或可注册的域是公共后缀加上一个附加标签。