gpt4 book ai didi

python - 必要时如何将 'http://' 协议(protocol)添加到 url?

转载 作者:IT老高 更新时间:2023-10-28 20:53:38 25 4
gpt4 key购买 nike

我需要解析一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com