我正在寻找一个库函数来规范化Python中的URL,即删除路径中的"./"或"../"部分,或添加默认端口或转义特殊字符等.结果应该是一个字符串,对于指向同一网页的两个URL是唯一的.例如http://google.com,http://google.com:80/a/../应返回相同的结果.
我更喜欢Python 3并且已经查看了urllib模块.它提供了分割URL的功能,但没有规范它们的功能.Java具有URI.normalize()执行类似操作的功能(虽然它不认为默认端口80等于没有给定端口),但是这样的东西是python吗?
我使用URL作为键,所以我需要它们是一致的和干净的.我需要一个python函数,它将获取一个URL并清理它,以便我可以从数据库中获取.例如,它将采取以下措施:
example.com
example.com/
http://example.com/
http://example.com
http://example.com?
http://example.com/?
http://example.com//
Run Code Online (Sandbox Code Playgroud)
并输出一个干净的一致版本:
http://example.com/
Run Code Online (Sandbox Code Playgroud)
我浏览了std libs和github,找不到这样的东西
更新
我找不到一个Python库来实现这里和RFC中讨论的所有内容:
http://en.wikipedia.org/wiki/URL_normalization
所以我现在正在写一个.这比我最初设想的要多得多.
我试图从网页中提取链接,然后在我的网络浏览器中打开它们。我的 Python 程序能够成功提取链接,但某些链接之间有空格,无法使用request module.
例如,example.com/A, B C它不会使用请求模块打开。但是如果我把它转换成example.com/A,%20B%20C它就会打开。python中有一种简单的方法来填充空格%20吗?
`http://example.com/A, B C` ---> `http://example.com/A,%20B%20C`
Run Code Online (Sandbox Code Playgroud)
我想将它们之间有空格的所有链接转换为上述格式。
我有两个由django-pipeline编译的文件以及s3boto:master.css和master.js.它们在我的桶中设置为"公共".但是,当我访问它们时,有时会提供master.css,有时它会使用SignatureDoesNotMatch.与master.js相同.这不会发生在Chrome上.我能错过什么?
编辑:它现在也发生在Chrome上.