Python 没有解析参数?

问题描述 投票:0回答:1

我写了下面的代码来像这样从url中提取Get参数:

from urllib.parse import urlparse
from urllib.parse import parse_qs

url = 'https://www.example.com/some_path?some_key=some_value&tt=new_value'
parsed_url = urlparse(url)
for val in parse_qs(parsed_url.query):
    print(val)

它与上面的 url 一起工作很好但是一旦我做了 url-encoding(这仍然是一个有效的 url 方案,因为浏览器接受它)像这样:

https://www.example.com/some_path?some_key%3Dsome_value%26tt%3Dnew_value

我的代码没有输出任何东西,这是为什么以及如何解决?

注意:我知道你们中的一些人可能建议对输入进行 url 解码,但我认为这不会解决所有情况,如果有另一种有效的 url 编码,应该正确解析怎么办?

python python-3.x url-parameters urlparse
1个回答
0
投票

parse_qs
解码名称和值中的 % 编码,但它需要查询名称和值之间的文字
=
和(默认情况下)文字
&
作为分隔符。您可以在源here中查看它 -
parse_qsl
完成工作,例如它在 = 上执行字符串拆分以分隔查询名称和值。

从你的最后一句话来看,我认为这不是你想要的,但是

parse_qs(urllib.parse.unquote(parsed_url.query))
会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.