Подтвердить что ты не робот

Как добавить пользовательские параметры в строку запроса URL-адреса с помощью Python?

Мне нужно добавить пользовательские параметры в строку запроса URL, используя Python

Пример: Это URL-адрес, который извлекает браузер (GET):

/scr.cgi?q=1&ln=0

тогда выполняются некоторые команды python, и в результате мне нужно установить следующий URL-адрес в браузере:

/scr.cgi?q=1&ln=0&SOMESTRING=1

Есть ли какой-то стандартный подход?

4b9b3361

Ответ 1

Используйте urlsplit(), чтобы извлечь строку запроса, parse_qsl(), чтобы проанализировать его (или parse_qs(), если вам не нужен порядок аргументов), добавьте новый аргумент urlencode() чтобы вернуть его обратно в строку запроса urlunsplit(), чтобы перевести его обратно в один URL-адрес, а затем перенаправить клиент.

Ответ 2

Вы можете использовать urlsplit() и urlunsplit() разломать и перестроить URL-адрес, а затем использовать urlencode() в строке синтаксического анализа:

from urllib import urlencode
from urlparse import parse_qs, urlsplit, urlunsplit

def set_query_parameter(url, param_name, param_value):
    """Given a URL, set or replace a query parameter and return the
    modified URL.

    >>> set_query_parameter('http://example.com?foo=bar&biz=baz', 'foo', 'stuff')
    'http://example.com?foo=stuff&biz=baz'

    """
    scheme, netloc, path, query_string, fragment = urlsplit(url)
    query_params = parse_qs(query_string)

    query_params[param_name] = [param_value]
    new_query_string = urlencode(query_params, doseq=True)

    return urlunsplit((scheme, netloc, path, new_query_string, fragment))

Используйте его следующим образом:

>>> set_query_parameter("/scr.cgi?q=1&ln=0", "SOMESTRING", 1)
'/scr.cgi?q=1&ln=0&SOMESTRING=1'

Ответ 3

import urllib
url = "/scr.cgi?q=1&ln=0"
param = urllib.urlencode({'SOME&STRING':1})
url = url.endswith('&') and (url + param) or (url + '&' + param)

документы

Ответ 4

Вы можете использовать библиотеку манипуляций с URL-адресами python furl.

import furl
f =  furl.furl("/scr.cgi?q=1&ln=0")  
f.args['SOMESTRING'] = 1
print(f.url)