91

我需要知道如何在 python 中构建 URL,例如:

http://subdomain.domain.com?arg1=someargument&arg2=someotherargument

你会推荐使用什么库,为什么?这种图书馆有“最佳”选择吗?

另外,您能否为我提供开始使用该库的示例代码?

4

4 回答 4

82

我会选择 Python 的urllib,它是一个内置库。

蟒蛇2

import urllib
url = 'https://example.com/somepage/?'
params = {'var1': 'some data', 'var2': 1337}
print(url + urllib.urlencode(params))

蟒蛇 3

import urllib.parse
url = 'https://example.com/somepage/?'
params = {'var1': 'some data', 'var2': 1337}
print(url + urllib.parse.urlencode(params))

输出:

https://example.com/somepage/?var1=some+data&var2=1337
于 2015-01-18T16:23:50.907 回答
45

urlparsepython标准库中的所有内容都是关于构建有效的url。检查 urlparse 的文档

于 2013-04-03T22:57:35.133 回答
22

下面是一个urlparse用于生成 URL 的示例。这为向 URL 添加路径提供了便利,而无需担心检查斜杠。

import urllib

def build_url(base_url, path, args_dict):
    # Returns a list in the structure of urlparse.ParseResult
    url_parts = list(urllib.parse.urlparse(base_url))
    url_parts[2] = path
    url_parts[4] = urllib.parse.urlencode(args_dict)
    return urllib.parse.urlunparse(url_parts)

>>> args = {'arg1': 'value1', 'arg2': 'value2'}
>>> # works with double slash scenario
>>> build_url('http://www.example.com/', '/somepage/index.html', args)

http://www.example.com/somepage/index.html?arg1=value1&arg2=value2

# works without slash
>>> build_url('http://www.example.com', 'somepage/index.html', args)

http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
于 2017-06-14T18:32:56.830 回答
11
import urllib

def make_url(base_url , *res, **params):
    url = base_url
    for r in res:
        url = '{}/{}'.format(url, r)
    if params:
        url = '{}?{}'.format(url, urllib.urlencode(params))
    return url

>>>print make_url('http://example.com', 'user', 'ivan', aloholic='true', age=18)

http://example.com/user/ivan?age=18&aloholic=true
于 2017-05-12T09:47:32.740 回答