我需要使用Python将自定义参数添加到URL查询字符串
示例:这是浏览器提取的URL(GET):
/scr.cgi?q=1&ln=0
Run Code Online (Sandbox Code Playgroud)
然后执行一些python命令,因此我需要在浏览器中设置以下URL:
/scr.cgi?q=1&ln=0&SOMESTRING=1
Run Code Online (Sandbox Code Playgroud)
有一些标准方法吗?
Wil*_*hes 68
您可以使用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))
Run Code Online (Sandbox Code Playgroud)
使用方法如下:
>>> set_query_parameter("/scr.cgi?q=1&ln=0", "SOMESTRING", 1)
'/scr.cgi?q=1&ln=0&SOMESTRING=1'
Run Code Online (Sandbox Code Playgroud)
使用urlsplit()
提取的查询字符串,parse_qsl()
分析它(或者parse_qs()
,如果你不关心参数顺序),添加新的说法,urlencode()
把它放回一个查询字符串,urlunsplit()
融合回成一个单一的URL,然后重定向客户端.
归档时间: |
|
查看次数: |
18655 次 |
最近记录: |