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

sum*_*mid 11 python url urlparse

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

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

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

我看着也进入源代码urlparse的类SplitResultParseResult.它们具有一些基本功能,可用于子类化.但是我必须将其余的urlparse函数重写为子类方法.

我还发现了mxURL - Python的灵活URL数据类型.它非常接近我真正想要的.只是它似乎对我的目的来说太过分了.

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

我的解决方案

为了获得我的URL类,我基本上做了两件事:

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

Fre*_*Foo 14

urlparse 封装URL转换成一类,叫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='')
Run Code Online (Sandbox Code Playgroud)

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

  • ParseResult被命名为.tuple.我无法弄清楚为什么.我想更改现有网址,但是没有明确的方法可以使用urllib. (2认同)

neu*_*nus 7

您可能需要考虑看看Furl,因为它可能可以满足您的需求。


ssc*_*ssc 7

虽然迟到了大约 10 年,但今天,pydantic提供了几种可能有助于验证、存储和传递 URL 的 URL 类型;随着类型提示越来越mypy流行,有些人可能会认为这是某种标准。


Geo*_*tov 5

截至 2018 年,我们拥有的内容:

\n\n\n\n

目前只有 Furl 得到维护,但它的主要缺点是它是可变的,当然这不鼓励最佳实践。(有很好的现代参考 \xe2\x80\x94pathlib它由不可变的类组成。)

\n\n

总的来说,拥有一种轻松的 OO 方式来解析和构造 URL 是非常棒的。

\n\n

更新

\n\n

亚尔值得一看。

\n