urllib未引发无效URL

2024-04-20 03:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在解析URL时遇到了一些奇怪的行为。我希望收到无效的URL异常,但以下URL的主机名返回了位于“[]”括号中的URL:

from urllib.parse import urlparse
print(urlparse('http://myurl.com[notmyurl.com]').hostname)

输出:

>>> notmyurl.com

这是预期的行为吗


Tags: fromimportcomhttpurlparseurllibhostname
1条回答
网友
1楼 · 发布于 2024-04-20 03:04:37

这是通过调试器运行代码并单步执行parse.pyurllib中的步骤的预期行为。我们看到以下内容

@property
def _hostinfo(self):
    netloc = self.netloc
    _, _, hostinfo = netloc.rpartition('@')
    _, have_open_br, bracketed = hostinfo.partition('[')
    if have_open_br:
        hostname, _, port = bracketed.partition(']')
        _, _, port = port.partition(':')
    else:
        hostname, _, port = hostinfo.partition(':')
    if not port:
        port = None
    return hostname, port

因此,您可以看到_hostinfo方法调用将检查url中的括号,并返回括号内的值。下面是通过pycharm调试器运行代码的屏幕截图,正如您在代码窗口中看到的那样,它告诉您每个参数的值集,以及从何处开始剥离要返回的not url

enter image description here

相关问题 更多 >