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

相关推荐
一 乐2 分钟前
博客管理系统|基于springboot + vue博客管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕设
M78佐菲24 分钟前
ARM学习笔记(12)
linux·arm开发·笔记·嵌入式硬件·学习
茉莉玫瑰花茶24 分钟前
GO [ 类型 ]
开发语言·数据库·golang
梅雅达编程笔记30 分钟前
02_BeautifulSoup网页数据提取
开发语言·爬虫·python·beautifulsoup·数据采集
ClouGence30 分钟前
开源数据库管理工具 CloudDM 4.3.0 发布,支持 SQL 收藏,多数据源语法支持大幅增强
数据库·oracle·sql server
可涵不会debug1 小时前
C++ std::bind 实战教程:线程池、回调场景全覆盖
linux·开发语言·c++
Summer-Bright1 小时前
深度 | 壁仞1.74亿中标智算中心:国产GPU从能用跨进商用,但4.5亿的大单却因凑不齐三家废标了
数据库·ai·国产gpu
青梅味猪大肠1 小时前
【操作系统-26】进程互斥软件实现-Peterson算法
linux·运维·服务器
云安全助手1 小时前
自建接入VS聚合平台:企业 AI 调用的选型思路与迁移成本拆解
java·大数据·数据库·人工智能·ai大模型
白露与泡影2 小时前
Redis 的“单线程”与“多线程”:一场关于性能与简洁的权衡
数据库·redis·php