文章目录

  • 分析
  • 开搞
  • 1、字符串操作
  • 2、urllib
  • 3、tld
  • 4、furl
  • 总结


分析

如题,咋整。

先简单分析一下,这个问题的解决方法大致分两种。

第一种,自己手撸。

第二种,选择成熟的轮子,毕竟我们高贵的双手还要用来搬砖,没有时间用来造重复的轮子。

开搞

1、字符串操作

咱们先说说手撸,没啥特殊的,就是字符串截取,稍微高级一点可以把正则用上。

比如下面就是一个小例子:

def get_domain_by_re(u):
    d = re.search(r"(?<=http[s]://)[.\w-]*(:\d{,8})?((?=/)|(?!/))", u).group()
    return d

自己写的好处是可定制性比较高,但是要规范好输入的内容,做好异常处理,不然会很恼火。当然,如果你的输入都可控,自己写还是比较方便的。

同样的,大家可以使用类似 rsplit 这样的方法来操作字符串,都很方便。

另外,给大家推荐几个还不错的模块,大家根据自身需求选用。

2、urllib

urllib 是个很好用的库,可以用来发送 GET、POST 请求,搞爬虫的基本都绕不开这个库,另外他还提供了很多好用的小工具,比如这个 urlparse 方法。

urllib.parse.urlparse("")

结果:

可以看到,解析的结果还是很全的,如果你只想要域名,可以直接这么敲:

def get_domain_by_urllib(u):
    return urllib.parse.urlparse(u).netloc

简单,好用。

3、tld

tld 功能就更强大了,毕竟他就是专门用来解析域名的。

比如我们上面的提取域名的功能, tld 可以这么写:

def get_domain_by_tld(u):
    return tld.get_tld(u, as_object=True).parsed_url.netloc

其实 tld.get_tld 返回的是一个内容丰富的对象,可以看看下面的截屏:

Python提取路径列表中指定位置的内容 python提取url_好用


另外,什么 url 自动补全、什么域名有效性检测巴拉巴拉的,大家可以自己去扒文档,我就不啰嗦了。

4、furl

其实这些工具都挺好用的,基本都是一行代码的事:

def get_domain_by_furl(u):
    return furl.furl(u).netloc

你看,出来了。

总结

上面我说的基本都只介绍了每个类库最基础最皮毛的东西,更多的还是想让大家知道有这么个库,至于每个库更高级的用法,大家可以亲自去尝试一下。

目前我最常用的就是 urllib,因为其他地方也需要使用他,不需要再引入其他库。

大家根据自身情况灵活选择吧,工具是死的,人是活的。

祝大家变的更强。