python - python 中无效的 URL 解析器

标签 python python-2.7

[是的,标题没有错别字!]

在 python 中,我需要一些可以解析 URL 的东西。我不敢相信一些标准还不存在。由于 URL 是在配置中设置的,我想确保它不是垃圾。

有 urlparse.urlparse,但它只解析“有效 URL”(某些无效 URL 有时会引发未记录的 ValueError)

例如

>>> import urlparse
>>> urlparse.urlparse('http://aa :: aa ! aa:11.com:aa').netloc
'aa :: aa ! aa:11.com:aa'

显示 urlparse 如何解析我认为无效的 URL。

最佳答案

URL解析和URL验证实际上是不同的任务。

urlparse.urlparse 进行解析,验证通常使用正则表达式机器(Python 中内置的 re 模块)进行。

以下是 Django 框架的 URL 验证示例:

regex = re.compile(
    r'^(?:http|ftp)s?://' # http:// or https://
    r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' #domain...
    r'localhost|' #localhost...
    r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
    r'(?::\d+)?' # optional port
    r'(?:/?|[/?]\S+)$', re.IGNORECASE)

关于python - python 中无效的 URL 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967733/

相关文章:

python - ImportError 没有名为 BeautifulSoup 的模块 - 路径错误

python - 使用基准年计算指数

python - 在 Sublime Text 中加载任何其他包之前,如何使包可导入?

python - 将多个字典附加到列表并转储到 json

python - Django manage.py runserver 无法响应

Java使用 tensorflow 图调用python函数

python - 单向删除 删除 Django Channels 线程

python pandas时间序列图,如何在ts.plot()之外设置xlim和xticks?

Python - 将 CSV 列舍入到最近的 30 分钟

python-2.7 - 保留 Datapath#ports 以保持兼容性