📌  相关文章
📜  获取不带查询字符串的 url (1)

📅  最后修改于: 2023-12-03 14:57:13.412000             🧑  作者: Mango

获取不带查询字符串的 URL

在Web开发中,我们有时需要获取一个URL但不需要它的查询字符串。这个任务可以通过一些简单的方法来完成,本文将介绍其中的一些方法。

方法一

使用Python的内置库urllib.parse中的 urlsplit()urlunsplit()函数来对URL进行拆分和重构。通过将urlsplit()函数的输出赋值给变量,我们可以获取URL的6个部分:协议、网址、路径、查询字符串、主机名和端口号。我们可以重构这些部分,但不包括查询字符串。

这是一个用于获取URL的代码片段(Python):

from urllib.parse import urlsplit, urlunsplit

url = 'http://www.example.com/path?key=value'
parts = urlsplit(url)
url_without_query = urlunsplit((parts.scheme, parts.netloc, parts.path, '', '',''))
print(url_without_query)

urlsplit()函数将URL拆分成一个6元组,然后我们可以使用urlunsplit()函数来重组不包含查询字符串的URL。在此例中,输出结果将是:

http://www.example.com/path
方法二

使用Python的内置库urllib.parse中的 urlparse()urlunparse()函数。这些函数与urlsplit()urlunsplit()类似,但是urlparse()在返回6个元素的元组之前会对查询字符串进行拆分,而urlunparse()则会恢复查询字符串。

以下是使用urlparse()urlunparse()函数实现相同任务的代码:

from urllib.parse import urlparse, urlunparse

url = 'http://www.example.com/path?key=value'
parts = urlparse(url)
url_without_query = urlunparse((parts.scheme, parts.netloc, parts.path, '', '', ''))
print(url_without_query)

这将输出:

http://www.example.com/path
结论

这两种方法都能很好地解决获取URL但不需要其查询字符串的问题。选择哪种方法取决于个人喜好,但是对于大多数情况,使用urlsplit()urlunsplit()函数可能比urlparse()urlunparse()函数更好。