mp9*_*p94 14 python url url-validation
我一直试图弄清楚验证URL的最佳方法是什么(特别是在Python中),但实际上并没有找到答案.似乎没有一种已知的方法来验证URL,这取决于您认为可能需要验证的URL.同样,我发现很难找到易于阅读的URL结构标准.我确实找到了RFC 3986和3987,但它们包含的不仅仅是它的结构.
我错过了什么,或者没有一种标准方法来验证URL?
bgs*_*ler 23
这看起来可能与如何在Python中使用正则表达式验证URL有关?
您应该能够使用urlparse那里描述的库.
>>> from urllib.parse import urlparse # python2: from urlparse import urlparse
>>> urlparse('actually not a url')
ParseResult(scheme='', netloc='', path='actually not a url', params='', query='', fragment='')
>>> urlparse('http://google.com')
ParseResult(scheme='http', netloc='google.com', path='', params='', query='', fragment='')
Run Code Online (Sandbox Code Playgroud)
调用urlparse要检查的字符串,然后确保ParseResult具有scheme和的属性netloc
Chr*_*ski 11
最初的问题有点旧,但您可能还想查看我几个月前发布的Validator-Collection库.它包括基于高性能的基于正则表达式的URL验证,以符合RFC标准.一些细节:
re模块的替代品)它也很容易使用:
from validator_collection import validators, checkers
checkers.is_url('http://www.stackoverflow.com')
# Returns True
checkers.is_url('not a valid url')
# Returns False
value = validators.url('http://www.stackoverflow.com')
# value set to 'http://www.stackoverflow.com'
value = validators.url('not a valid url')
# raises a validator_collection.errors.InvalidURLError (which is a ValueError)
Run Code Online (Sandbox Code Playgroud)
此外,Validator-Collection还包含大约60多个其他验证器,包括域和电子邮件地址,因此人们可能会觉得有用.