- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我需要解析一个 URL。我目前正在使用 urlparse.urlparse() 和 urlparse.urlsplit()。
问题是当它不存在方案时,我无法从 URL 获取“netloc”(主机)。我的意思是,如果我有以下网址:
www.amazon.com/Programming-Python-Mark-Lutz/dp/0596158106/ref=sr_1_1?ie=UTF8&qid=1308060974&sr=8-1
我无法获取 netloc:www.amazon.com
根据 python 文档:
Following the syntax specifications in RFC 1808, urlparse recognizes a netloc only if it is properly introduced by ‘//’. Otherwise the input is presumed to be a relative URL and thus to start with a path component.
所以,这是故意的。但是,我仍然不知道如何从该 URL 获取 netloc。
我想我可以检查该方案是否存在,如果不存在,则添加它,然后解析它。但这个解决方案似乎不太好。
你有更好的主意吗?
编辑:感谢所有的答案。但是,我不能做 Corey 和其他人提出的“startswith”事情。因为,如果我得到一个带有其他协议(protocol)/方案的 URL,我会把它搞砸。见:
如果我得到这个网址:
ftp://something.com
使用建议的代码,我会在开头添加“http://”,然后会搞砸。
我找到的解决方案
if not urlparse.urlparse(url).scheme:
url = "http://"+url
return urlparse.urlparse(url)
注意事项:
我先做一些验证,如果没有给出方案,我认为它是 http://
最佳答案
看来您需要指定协议(protocol)才能获取 netloc。
如果它不存在则添加它可能如下所示:
import urlparse
url = 'www.amazon.com/Programming-Python-Mark-Lutz'
if '//' not in url:
url = '%s%s' % ('http://', url)
p = urlparse.urlparse(url)
print p.netloc
有关此问题的更多信息:https://bugs.python.org/issue754016
关于python - 必要时如何将 'http://' 协议(protocol)添加到 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344993/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!