【爬虫】使用parse_qs函数来将查询字符串转换成字典

在Python中,可以使用urllib.parse模块中的parse_qs函数来将查询字符串转换成字典。下面是一个例子:

python 复制代码
from urllib.parse import parse_qs
# 查询字符串
query_string = "appId=5053&cityCode=110100&t=1715150256145&pageIndex=1&pageSize=12&keyword=%E8%8B%B1%E8%AF%AD&order=0"
# 转换为字典
parsed_dict = parse_qs(query_string)
print(parsed_dict)
# {'appId': ['5053'], 'cityCode': ['110100'], 't': ['1715150600755'], 'pageIndex': ['1'], 'pageSize': ['12'], 'keyword': ['英语'], 'order': ['0']}

执行这段代码,将得到一个字典,其中键是查询字符串中的参数名,值是参数值列表。(到这,就可以直接发请求,一般不会出问题。)

其他说明

由于parse_qs会将所有值都视为列表,即使它们只出现一次,如果需要单个值而不是列表,可能需要进一步处理字典。

请注意,parse_qs不会解码URL编码的参数值。如果需要解码参数值,可以使用urllib.parse.parse_qsl函数,然后手动解码每个值,或者使用urllib.parse.unquote函数来解码整个查询字符串。下面是一个解码参数值的例子:

python 复制代码
from urllib.parse import parse_qsl, unquote
# 查询字符串
query_string = "appId=5053&cityCode=110100&t=1715150256145&pageIndex=1&pageSize=12&keyword=%E8%8B%B1%E8%AF%AD&order=0"
# 转换为字典,并解码参数值
parsed_dict = {k: unquote(v[0]) for k, v in parse_qsl(query_string)}
print(parsed_dict)

在这个例子中,parse_qsl函数将查询字符串转换为一个元组列表,每个元组包含一个键和一个值列表。然后,我们使用列表推导式和一个字典推导式来创建一个新字典,其中键是原始键,值是解码后的值。由于parse_qsl返回的值是一个列表,我们使用v[0]来获取第一个元素,即实际的值。最后,我们使用unquote函数来解码每个值。

相关推荐
向日葵花籽儿31 分钟前
#运维 | 前端 # Linux http.server 实践:隐藏长文件名,简短路径 (http://IP:port/别名 ) 访问
linux·运维·前端
nightunderblackcat1 小时前
新手向:异步编程入门asyncio最佳实践
前端·数据库·python
DarkAthena2 小时前
【GaussDB】使用MySQL客户端连接到GaussDB的M-Compatibility数据库
数据库·mysql·gaussdb
livemetee2 小时前
Flink2.0学习笔记:使用HikariCP 自定义sink实现数据库连接池化
大数据·数据库·笔记·学习·flink
XXD啊2 小时前
Redis 从入门到实践:Python操作指南与核心概念解析
数据库·redis·python
好望角雾眠5 小时前
第三阶段数据库-7:sql中函数,运算符,常用关键字
数据库·笔记·sql·学习·sqlserver·c#
牛角上的男孩8 小时前
apt update Ign and 404 Not Found
开发语言·数据库
我一定会有钱8 小时前
Linux爆音问题解决方法(隔一会会有奇怪噪音)
linux·运维·服务器
Dobby_0510 小时前
【Ansible】变量与敏感数据管理:Vault加密与Facts采集详解
linux·运维·云原生·ansible
l_tian_tian_11 小时前
SpringClound——网关、服务保护和分布式事务
linux·服务器·前端