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

相关推荐

  • 高级语言需要经过程序处理吗?高级语言为什么要编译

    高级语言必须经过编译器或解释器等程序处理,转化为机器可执行的二进制指令,计算机才能完成运算与响应,为何高级语言无法被硬件直接读取人机沟通的底层逻辑断层人类习惯用自然语言和数学符号思考,而CPU只认高低电平对应的0和1,高级语言(如Python、Java、C++)的出现是为了降低开发门槛,其语法远离硬件架构,若没……

    2026年4月24日
    4700
  • 服务器监听端口是什么?作用与配置详解

    服务器监听端口是指在网络通信中,服务器上指定的一个数字标识符(范围从0到65535),用于接收来自客户端的连接请求,它充当服务器应用程序的“门牌号”,确保数据包准确路由到目标服务,如网站、数据库或电子邮件系统,当客户端(如浏览器)尝试访问服务器时,它通过这个端口号找到正确的服务,实现高效的数据交换,访问一个网站……

    2026年2月9日
    15400
  • 个人服务器docker怎么使用管理?docker容器部署教程

    个人服务器使用Docker管理的核心在于通过容器化技术实现环境隔离与一键部署,这不仅大幅降低了运维门槛,还解决了传统虚拟机资源占用过高和配置冲突的痛点,为什么选择Docker而非传统虚拟机在个人服务器领域,许多新手常陷入“虚拟机与容器哪个更好”的困惑,业内专家指出,虽然两者都能实现资源隔离,但Docker在轻量……

    2026年5月29日
    4300
  • 高端网站开发程包含哪些步骤?高端网站开发流程详解

    2026年高端网站开发程的核心在于以E-E-A-T为底层逻辑,融合AI交互与数据驱动,通过严苛的工程标准实现品牌数字化资产的高效转化与长效增长,2026高端网站开发程的底层重构告别模板,进入“数字资产”时代传统网站是信息展示牌,高端网站则是企业的数字资产中枢,2026年,高端网站开发程已彻底摒弃套壳模式,转向全……

    2026年4月29日
    5300
  • 防火墙技术在网络安全级网关中的应用现状及挑战有哪些?

    防火墙技术中的应用级网关(Application-Level Gateway,简称ALG)是一种工作在OSI模型第七层(应用层)的网络安全设备或软件组件,它通过深度解析特定应用协议(如HTTP、FTP、DNS等)的数据包,实现对网络应用流量的精细监控、过滤和代理转发,与包过滤防火墙或状态检测防火墙相比,ALG能……

    2026年2月3日
    12200
  • 服务器开技术服务费吗,技术服务费发票税率是多少

    企业在数字化运营过程中,服务器运维成本往往占据IT预算的大头,合理开具服务器技术服务费发票,不仅是财务合规的硬性要求,更是企业降低税负、优化成本结构的关键手段,核心结论在于:规范化的服务器技术服务费入账,能够将企业的运维支出转化为可抵扣的进项税额,同时通过专业的服务合同界定,确保企业数据资产安全与业务连续性,实……

    2026年3月27日
    10400
  • 服务器高配标准有哪些?,怎么选性价比最高

    服务器高配标准并非固定配置清单,而是根据业务场景在计算、存储、网络、可靠性四个维度上达到越级性能的综合定义, 无论你是搭建企业核心系统,还是部署高性能计算集群,理解高配的真正标准,才能避免硬件瓶颈和成本浪费,服务器高配标准2026:核心指标有哪些行业共识认为,高配服务器的核心指标包括CPU、内存、存储和网络四个……

    2026年8月5日
    300
  • PS4战地1都有哪些服务器,哪个服务器好

    PS4版《战地1》的服务器主要分为官方服务器和社区服务器,官方服务器按区域覆盖北美、欧洲、亚洲(日本、新加坡、香港等)和大洋洲,玩家可根据地理位置和延迟选择节点;社区服务器由玩家自建,规则灵活但稳定性依赖运营方,国内玩家优先选择日本或新加坡服务器,配合网络优化工具可获得最佳体验,战地1服务器类型与分布官方服务器……

    2026年8月7日
    800
  • 高计算型云服务器双十一活动有吗?高计算云服务器双十一优惠多少

    2026年双十一高计算型云服务器选购的终极答案:摒弃盲目凑单,锁定CPU与内存配比1:2及以上、主频超3.2GHz的实例,结合三年付与预留券叠加,方可实现算力成本的最优解,算力饥渴时代,为何高计算型实例成双十一破局点?算力重构业务边界2026年,AI推理、基因测序、实时风控等场景对单核算力要求呈指数级攀升,根据……

    2026年4月24日
    6100
  • 服务器密码有哪些特点?服务器密码设置应具备哪些安全特性

    服务器密码特点服务器密码是系统安全的第一道防线,其设计与管理直接决定企业数据资产的防护等级,真正的服务器密码必须具备高强度复杂性、动态可变性、权限差异化与审计可追溯性四大核心特点,缺一不可,以下从技术实现、运维实践与安全合规三个维度展开说明,为IT管理者提供可落地的解决方案,高强度复杂性:抵御暴力破解的基石密码……

    2026年4月15日
    6200

发表回复

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