首页 > 解决方案 > 使用 urllib 更改时间参数

问题描述

我需要更改 to 和 from 参数,但 urllib 错误地收集了所有内容。在字典中,参数更改正确,但旧的 url 被收集。

import urllib.parse
url = 'http://192.168.150.138:3000/render/d-solo/htddR-gGz/jmeter-dashboard?orgId=1&from=1589972154000&to=1589972739000&var-data_source=InfluxDB-Jmeter&var-application=application%20name&var-transaction=HTTP%20Request%20-%20homepage&var-measurement_name=jmeter&var-send_interval=5&panelId=23&width=1600&height=500&tz=Europe%2FMoscow'

urlStr: urllib.parse.ParseResult = urllib.parse.urlparse(url)
urlDict = urllib.parse.parse_qs(urlStr.query)
print(urlDict)
urlDict['from'] = ['1555926954000']
urlDict['to'] = ['1555938339000']
print(urlDict)
urlStr._replace(query=urllib.parse.urlencode(urlDict))
print(urlStr.geturl())

[Output]:
{'orgId': ['1'], 'from': ['1589972154000'], 'to': ['1589972739000'], 'var-data_source': ['InfluxDB-Jmeter'], 'var-application': ['application name'], 'var-transaction': ['HTTP Request - homepage'], 'var-measurement_name': ['jmeter'], 'var-send_interval': ['5'], 'panelId': ['23'], 'width': ['1600'], 'height': ['500'], 'tz': ['Europe/Moscow']}
{'orgId': ['1'], 'from': ['1555926954000'], 'to': ['1555938339000'], 'var-data_source': ['InfluxDB-Jmeter'], 'var-application': ['application name'], 'var-transaction': ['HTTP Request - homepage'], 'var-measurement_name': ['jmeter'], 'var-send_interval': ['5'], 'panelId': ['23'], 'width': ['1600'], 'height': ['500'], 'tz': ['Europe/Moscow']}
http://192.168.150.138:3000/render/d-solo/htddR-gGz/jmeter-dashboard?orgId=1&from=1589972154000&to=1589972739000&var-data_source=InfluxDB-Jmeter&var-application=application%20name&var-transaction=HTTP%20Request%20-%20homepage&var-measurement_name=jmeter&var-send_interval=5&panelId=23&width=1600&height=500&tz=Europe%2FMoscow

标签: pythonpython-3.xurlurllib

解决方案


我认为 _replace 不会进行就地替换。尝试将返回的值分配回 urlStr

urlStr=urlStr._replace(query=urllib.parse.urlencode(urlDict, doseq=True))

推荐阅读