python - 更改 url 参数

标签 python url urllib

如何改变url的参数值?没有正则表达式。

现在我尝试这个,但它很长:

from urllib.parse import parse_qs, urlencode,  urlsplit
url = 'http://example.com/?page=1&text=test#section'
param, newvalue = 'page', '2'

url, sharp, frag = url.partition('#')
base, q, query = url.partition('?')
query_dict = parse_qs(query)
query_dict[param][0] = newvalue
query_new = urlencode(query_dict, doseq=True)
url_new = f'{base}{q}{query_new}{sharp}{frag}'

另外,我尝试了 urlsplit:

parsed = urlsplit(url)
query_dict = parse_qs(parsed.query)
query_dict[param][0] = newvalue
query_new = urlencode(query_dict, doseq=True)
parsed.query = query_new
url_new = urlencode(parsed)

但是在urlparsed.query = query_new上它会出现错误AttributeError:无法设置属性

最佳答案

元组是不可变的。所以你必须替换它。这里 _ 是为了避免与字段名 ._replace 冲突。

from urllib.parse import parse_qs, urlencode,  urlsplit
url = 'http://example.com/?page=1&text=test#section'
param, newvalue = 'page', '2'
parsed = urlsplit(url)
query_dict = parse_qs(parsed.query)
query_dict[param][0] = newvalue
query_new = urlencode(query_dict, doseq=True)
parsed=parsed._replace(query=query_new)
url_new = (parsed.geturl())

关于python - 更改 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50893347/

相关文章:

python - Jupyter 笔记本在打开时运行所有单元格

Android 下载 Intent

javascript - 将 URL 作为字符串传递—— '&' 之后的所有内容都会丢失

python - urllib2:即使出现异常也可以获取 URL 内容

python - 在 Python 2.4 中使用 urllib 解析查询字符串

python - 从 Python 查询 MySQL 数据库返回 "Access Denied"

python - 捕获套接字超时异常

python - dask 数据框应用元

html - 我应该将网站的所有网址重定向到 https 吗?

python - 是否有适用于 Python 2.2 的带有 HTTPCookieProcessor 函数的 urllib2 模块?