【爬虫】使用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函数来解码每个值。

相关推荐
AAA修煤气灶刘哥2 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
RestCloud6 小时前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术9 小时前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
轻松Ai享生活12 小时前
5 节课深入学习Linux Cgroups
linux
christine-rr13 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
可涵不会debug13 小时前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom13 小时前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
麦兜*13 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
三坛海会大神55513 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆13 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs