python querystring怎么用?python解析url查询参数

在 Python 中处理 Query String(查询字符串)通常涉及从 URL 中提取参数,或者将字典转换为查询字符串,以下是几种常见的方法:

从 URL 中提取查询参数

使用 urllib.parse(推荐)

from urllib.parse import urlparse, parse_qs, parse_qsl
url = "https://example.com/search?name=John&age=30&city=Beijing&city=Shanghai"
# 解析 URL
parsed_url = urlparse(url)
query_string = parsed_url.query
# 方法 1: parse_qs - 返回字典,值为列表(因为一个键可能有多个值)
params = parse_qs(query_string)
print(params)
# {'name': ['John'], 'age': ['30'], 'city': ['Beijing', 'Shanghai']}
# 方法 2: parse_qsl - 返回键值对列表
params_list = parse_qsl(query_string)
print(params_list)
# [('name', 'John'), ('age', '30'), ('city', 'Beijing'), ('city', 'Shanghai')]
# 获取单个值
name = params['name'][0]  # 'John'
age = params.get('age', [''])[0]  # '30'

使用 requests 库(处理请求参数)

import requests
# 发送请求时自动处理查询字符串
response = requests.get("https://api.example.com/users", params={"name": "John", "age": 30})
print(response.url)
# https://api.example.com/users?name=John&age=30

将字典转换为查询字符串

使用 urllib.parse.urlencode

from urllib.parse import urlencode
params = {
    "name": "John",
    "age": 30,
    "city": "Beijing"
}
query_string = urlencode(params)
print(query_string)
# name=John&age=30&city=Beijing
# 如果需要包含在 URL 中
from urllib.parse import urlunparse, urlparse
base_url = "https://example.com/search"
parsed = urlparse(base_url)
new_url = parsed._replace(query=query_string).geturl()
print(new_url)
# https://example.com/search?name=John&age=30&city=Beijing

使用 requests 库

import requests
params = {"name": "John", "age": 30}
response = requests.get("https://api.example.com/users", params=params)
print(response.url)
# https://api.example.com/users?name=John&age=30

在 Web 框架中使用

Flask

from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
    # 获取查询参数
    name = request.args.get('name')
    age = request.args.get('age', type=int)  # 自动转换为整数
    # 获取所有查询参数
    all_params = request.args.to_dict()
    return f"Name: {name}, Age: {age}"

Django

from django.http import HttpResponse
def search_view(request):
    # 获取查询参数
    name = request.GET.get('name')
    age = request.GET.get('age', type=int)
    # 获取所有查询参数
    all_params = request.GET
    return HttpResponse(f"Name: {name}, Age: {age}")

常见注意事项

处理特殊字符

from urllib.parse import quote, unquote
# URL 编码
encoded = quote("Hello World")
print(encoded)  # Hello%20World
# URL 解码
decoded = unquote("Hello%20World")
print(decoded)  # Hello World

处理多个同名参数

from urllib.parse import parse_qs
url = "https://example.com/search?tag=python&tag=javascript&tag=web"
params = parse_qs(url.split('?')[1])
print(params)
# {'tag': ['python', 'javascript', 'web']}
# 获取所有值
tags = params['tag']
print(tags)  # ['python', 'javascript', 'web']
# 获取第一个值
first_tag = params['tag'][0]
print(first_tag)  # 'python'
场景 推荐方法
解析 URL 查询参数 urllib.parse.parse_qs()
构建查询字符串 urllib.parse.urlencode()
发送 HTTP 请求 requests.get(url, params=dict)
Web 框架中获取参数 Flask: request.args, Django: request.GET

这些方法涵盖了大多数处理 Query String 的场景,根据你的具体需求选择合适的方法即可。

(URL解析)Python如何实现URL解析?快来学习urllib标准库!
加载中
(URL解析)Python如何实现URL解析?快来学习urllib标准库!

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/483673.html

赞 (0)
上一篇 2026年7月11日 22:45
下一篇 2026年7月11日 22:46

相关推荐

  • 观致逸云主机是什么?云主机租用价格是多少

    观致逸云主机凭借高可用架构与弹性伸缩能力,成为中小企业及开发者在2026年平衡性能与成本的首选云基础设施方案,在云计算市场进入存量博弈的2026年,选择一款既稳定又具备极致性价比的主机产品,不再仅仅是技术选型问题,更是企业数字化转型的底层逻辑,观致逸云主机之所以能在众多竞品中脱颖而出,核心在于其将底层硬件资源与……

    2026年7月7日
    14200
  • 幻塔b服究竟有哪些服务器,和正式服怎么区分?

    《幻塔》B服指的是B站渠道服务器,即由哔哩哔哩(B站)代理运营的独立服务器集群,与官服(完美世界服)账号数据不互通,玩家常说的“B服”具体包含B站官方服、TapTap服以及部分手机品牌应用商店渠道服,对刚入坑的玩家来说,最头疼的事莫过于下载完游戏后,发现自己稀里糊涂进了B服,想和朋友一起玩却不在同一个服务器,今……

    2026年8月24日
    2000
  • 服务器应急预案怎么写?服务器故障应急处理方案

    建立完善的服务器应急预案是保障企业业务连续性与数据安全的核心防线,其本质在于通过标准化的流程将突发故障带来的损失降至最低,一套成熟的应急机制不仅能缩短平均修复时间(MTTR),更能有效规避因系统瘫痪导致的重大经济损失与信誉风险,企业必须摒弃“重建设、轻运维”的思维,将应急响应能力视为IT架构稳健性的关键指标,应……

    2026年3月30日
    11600
  • 服务器怎么借钱?服务器抵押贷款条件有哪些

    服务器作为企业数字化资产的核心,具备极高的融资价值,其“借钱”的本质是企业以服务器硬件资产、未来算力收益或运维服务合同为信用背书,获取金融机构资金支持的金融行为,核心结论在于:服务器“借钱”并非变卖资产,而是通过融资租赁、算力质押或供应链金融三种主流模式,将重资产转化为流动资金,实现资产保值与资金回笼的双赢……

    2026年3月21日
    15700
  • 服务器有缓存吗?详解缓存机制如何提升网站性能

    是的,服务器普遍使用缓存技术,缓存是现代服务器架构中不可或缺的核心组件,它通过将频繁访问的数据存储在能够快速检索的位置(通常是内存中),显著减少对后端慢速存储(如数据库、磁盘)的直接访问,从而极大提升系统的响应速度、吞吐量和整体性能,服务器缓存的工作原理与核心价值想象一下一个繁忙的仓库(服务器),每次有订单(用……

    服务器运维 2026年2月13日
    12830
  • 为什么服务器硬件更新慢?最新升级方案与优化建议

    服务器硬件老旧的现象在数据中心和企业IT环境中相当普遍,这并非简单的疏忽或预算不足,而是多种复杂因素权衡后的结果,背后涉及成本控制、风险规避、系统稳定性以及技术兼容性等多重考量,理解这些深层原因,并采取专业策略应对,是优化IT基础设施的关键, 成本压力:硬件采购与TCO的长期博弈高昂的初始投入: 企业级服务器……

    2026年2月7日
    11930
  • 二级服务器接口都包含哪些,主要作用是什么?

    二级服务器接口是位于负载均衡器与后端业务服务器之间的中间层,主要承担协议转换、请求分发、缓存加速和微服务治理等任务,常见类型包括HTTP反向代理接口、RPC通信接口、消息队列接口以及各类中间件接入接口,二级服务器接口的核心分类在分布式架构中,二级服务器接口通常部署在网关层与业务层之间,负责处理南北向流量与东西向……

    2026年8月14日
    500
  • 云服务器ecs的运维工具有哪些,怎么选?

    云服务器ECS的运维工具可分为监控告警、自动化编排、安全防护、备份容灾、日志分析五大类,主流选择包括云监控、运维编排服务OOS、安骑士、快照备份、日志服务等,结合企业级IDC服务商如简米科技和酷番云提供的增值服务,可构建更完整的运维体系,监控告警:第一时间发现异常监控是运维的基石,没有实时数据,故障只能靠用户投……

    2026年7月29日
    900
  • 服务器开发环境搭建怎么做?服务器环境配置详细教程

    高效、稳定的服务器开发环境搭建是保障软件工程顺利推进的基石,其核心在于标准化配置与安全隔离,一个优秀的开发环境应当具备快速复原能力、依赖隔离机制以及便捷的协作特性,通过容器化技术与自动化脚本的结合,能够将环境搭建时间从数小时压缩至分钟级,同时规避“在我机器上能跑”的版本冲突顽疾,确保开发、测试与生产环境的高度一……

    2026年3月28日
    8200
  • 服务器配置都有啥?|CPU内存硬盘详解

    服务器有啥配置?一台服务器的核心配置决定了它能处理什么任务、能处理多少任务以及运行的效率和稳定性,主要包含以下几个关键模块:处理器(CPU)、内存(RAM)、存储(硬盘/SSD)、网络连接(网卡)、电源与散热系统、以及扩展与管理特性,理解这些配置是选择或优化服务器的基石,核心动力:处理器(CPU)CPU是服务器……

    2026年2月15日
    16500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注