文章目录
- 分析
- 开搞
- 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
返回的是一个内容丰富的对象,可以看看下面的截屏:
另外,什么 url 自动补全、什么域名有效性检测巴拉巴拉的,大家可以自己去扒文档,我就不啰嗦了。
4、furl
其实这些工具都挺好用的,基本都是一行代码的事:
def get_domain_by_furl(u):
return furl.furl(u).netloc
你看,出来了。
总结
上面我说的基本都只介绍了每个类库最基础最皮毛的东西,更多的还是想让大家知道有这么个库,至于每个库更高级的用法,大家可以亲自去尝试一下。
目前我最常用的就是 urllib
,因为其他地方也需要使用他,不需要再引入其他库。
大家根据自身情况灵活选择吧,工具是死的,人是活的。
祝大家变的更强。