Python中是否有预定义的URL类?

时间:2011-05-29 20:39:50

标签: python url urlparse

我在python-modules,Django,Zope或者Python中的任何地方寻找像java.net.URL这样的东西。 我希望它最好来自语义原因,因为有关程序的分析结果意味着URL在其中起着至关重要的作用。结果是这样的URL类在该程序中也将具有很大的实际用途。

当然我可以自己写这样的课程,但在开始重新发明轮子之前我想环顾四周。

我确实看过urllib2urlparseurlparse基本上具有我需要的功能,但它不会将其封装到类java.net.URL之类的类中。关于我对我的程序的分析,它是颠倒的。

我还在类urlparseSplitResult中查看了ParseResult的源代码。它们具有一些基本功能,可用于子类化。但我必须将其余的urlparse函数重写为子类方法。

我也找到了mxURL - Flexible URL Datatype for Python。它非常接近我真正想要的。只是这对我的目的来说似乎太过分了。

有人可以建议另一种选择吗?我应该继续重新发明轮子吗?

我的解决方案:

要获得我的URL课程,我基本上做了两件事:

  1. 继承自urlparse.ResultMixin
  2. 定义仅调用urlparse.urlparse()并将结果转换为的函数 URL实例的参数。

3 个答案:

答案 0 :(得分:13)

urlparse 封装到一个名为ParseResult的类中,因此可以将其视为工厂函数。直接来自Python文档:

>>> urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
            params='', query='', fragment='')

如果您迫切需要一个名为URL的类来封装您的网址,请使用别名(URL = urlparse.ParseResult)或创建适配器。

答案 1 :(得分:3)

您可能需要考虑查看furl,因为它可能是您需求的答案。

答案 2 :(得分:0)

我们在2018年的情况:

今天只保留了furl,但它的主要缺点是它是可变的,当然,这并不鼓励最佳实践。 (有很好的现代引用 - pathlib,它由不可变类组成。)

总的来说,使用无痛的OO方法来解析和构建URL是很糟糕的。