Ответ 1
urlparse
в стандартной библиотеке python - это создание правильных URL-адресов. Проверьте документацию urlparse
Мне нужно найти библиотеку для создания URL-адресов в python, например:
http://subdomain.domain.com?arg1=someargument&arg2=someotherargument
Какую библиотеку вы бы рекомендовали использовать и почему? Есть ли "лучший" выбор для такого рода библиотеки?
urlparse
в стандартной библиотеке python - это создание правильных URL-адресов. Проверьте документацию urlparse
Я бы пошел на Python urllib
, это встроенная библиотека.
# Python 2:
import urllib
# Python 3:
# import urllib.parse
getVars = {'var1': 'some_data', 'var2': 1337}
url = 'http://domain.com/somepage/?'
# Python 2:
print(url + urllib.urlencode(getVars))
# Python 3:
# print(url + urllib.parse.urlencode(getVars))
Вывод:
http://domain.com/somepage/?var2=1337&var1=some_data
Вот пример использования urlparse
для создания URL-адресов. Это обеспечивает удобство добавления пути к URL-адресу, не беспокоясь о проверке косой черты.
import urllib
import urlparse
def build_url(baseurl, path, args_dict):
# Returns a list in the structure of urlparse.ParseResult
url_parts = list(urlparse.urlparse(baseurl))
url_parts[2] = path
url_parts[4] = urllib.urlencode(args_dict)
return urlparse.urlunparse(url_parts)
args = {'arg1': 'value1', 'arg2': 'value2'}
# works with double slash scenario
url1 = build_url('http://www.example.com/', '/somepage/index.html', args)
print(url1)
>>> http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
# works without slash
url2 = build_url('http://www.example.com', 'somepage/index.html', args)
print(url2)
>>> http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
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
import requests
payload = {'key1':'value1', 'key2':'value2'}
response = requests.get('http://fireoff/getdata', params=payload)
print response.url