在看scrapy-cluster源码的时候发现了一个非常实用的包-tldextract,
可以非常方便的抽取出一个url的域名作为redis的key的一部分,感觉很神奇。所以记录一下。
对于一个网址而言,比如 www.kingwen.cn,可以分为三部分。www, kingwen, cn。分别称为二级域名,域名,后缀。tldextract(top-level domain)这个包就可以帮我们非常快的解决这个问题。
安装tldextract包
1 | pip3 install tldextract |
使用tldextract包
1 | import tldextract |
源码实现
主要分为三部分。
- 首先是进行切割,将输入的url进行划分,利用# ? @ : 等特殊符号进行不断的划分,最后将主体的域名部分提取出来。
- 其次将前一部分的主体域名通过’.'进行划分,形成对应的list。然后按照从位置i匹配到末尾元素的原则找到符合suffix字典(预先定义好的7336条)的第一个位置i.然后返回i。
- 最后 list[i:]就是suffix. list[:i-1]就是subdomain. list[i]就是domain.从而问题得到解决。
尽管比较简单,但是比较实用,所以就记录一下。
在以后用到的时候可以省去很多烦恼。