Python模块--PublicSuffix/PublicSuffix2 <获取URL的域名>

.com/.cn/.org之类的域名很好解决

类似.com.cn/.org.cn类似的域名没有直接的办法解决,本想搜集所有的顶级域名生成list然后使用正则匹配,却发现了这个。

PublicSuffix

PublicSuffix2

基本的用法在介绍里面都有,但是需要注意这里面的几个坑,就是一条URL不能直接往里面塞,否则塞进去不识别的吐出来还是未识别的字符串。

  1. http://www.baidu.com/
  2. www.baidu.com/
  3. www.baidu.com#pictures
  4. www.baidu.com/search?word=sun
  5. www.baidu.com?balabala....
  6. ...

以上这些URL都是PublicSuffix无法正常识别的URL,原样返回或者返回一个不期望的字符串,所以在使用之前需要做一些字符串的处理。

 1 from publicsuffix import fetch, PublicSuffixList
 2 import codecs
 3 
 4 try:
 5     # 下载在线数据库生成匹配匹配list
 6     psl = PublicSuffixList(fetch())  #建议将数据库下载使用,本来就慢还要下载
 7 except Exception as error:
 8     # 使用本地数据库生成匹配匹配list
 9     psl_file = codecs.open('publicsuffix/public_suffix_list.dat',     encoding='utf8')
10     psl = PublicSuffixList(psl_file)
11 
12 # 处理一下乱七八糟的URL
13 def pure_url(url):
14     ......
15 
16 domain = psl.get_public_suffix(pure_url("http://www.baidu.com?word/"))

 

posted @ 2016-07-16 17:11  狗日的阳光  阅读(1987)  评论(0)    收藏  举报