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年2月4日 05:12

相关推荐

  • 服务器密码管理办法是什么?服务器密码管理规范及安全策略

    服务器密码管理办法的核心目标是保障系统安全、规范权限管理、防范数据泄露,同时兼顾运维效率与合规要求,在当前网络攻击频发、数据泄露事件高发的背景下,科学、系统的密码管理策略已从“可选项”变为“必选项”,本文基于行业最佳实践与等保2.0、GDPR等合规标准,提出一套可落地、可审计、可持续优化的服务器密码管理办法,密……

    2026年4月14日
    6900
  • 给恋人注册域名怎么操作?情侣专属域名注册指南

    给恋人注册域名是一种极具仪式感且永不过时的数字浪漫,建议优先选择寓意独特的.com或.cn后缀,并通过正规注册商完成实名认证与隐私保护设置,确保这段数字资产的安全与专属感,在数字时代,爱情不再仅仅存在于聊天记录或相册里,它更需要一个独立、永久且完全属于你们的“数字家园”,拥有一个专属域名,意味着你们在互联网上拥……

    2026年7月9日
    8710
  • 高级代码审计工程师任职要求有哪些?高级代码审计师招聘条件

    2026年高级代码审计工程师的核心任职要求,已从单一的漏洞挖掘跃升为具备底层架构重构能力、AI辅助审计驾驭力及合规驱动修复闭环的复合型安全架构标准,底层技术底座:从“找漏洞”到“懂架构”的硬核跨越语言与运行时深度掌控高级岗位拒绝“语法级”审查,要求具备底层运行时的逆向与推演能力,系统级语言审计:精通C/C……

    2026年4月27日
    5700
  • 服务器怎么取消权限设置,服务器权限设置在哪里修改

    服务器取消权限设置的核心在于精准定位权限对象并执行回收操作,最安全且高效的方法是遵循“最小权限原则”,通过系统命令或管理工具将原本宽泛的权限范围收缩至业务必需的最低限度,而非简单粗暴地执行“完全控制”或“777”全开权限,这一过程必须严格区分操作系统环境,重点解决文件系统权限、用户组权限以及服务运行权限的冗余配……

    2026年3月14日
    12900
  • 个人支出数据库怎么建?如何制作个人记账表格

    个人支出数据库的核心价值在于通过自动化记账与多维分析,将混乱的消费流水转化为可执行的财务洞察,从而帮助用户实现从“被动记录”到“主动规划”的财务自由,很多人对记账存在误解,认为这只是简单的加法运算,建立一套高效的个人支出数据库,本质上是构建个人的财务操作系统,它不仅仅是记录钱花在哪里,更是为了回答“钱去哪了……

    2026年6月1日
    3200
  • 高级数据仓库研发工程师有前途吗?数据仓库开发职业发展前景如何

    高级数据仓库研发工程师不仅前途广阔,更是2026年AI与云原生时代下企业数据资产化的核心稀缺人才,职业生命周期长且薪资溢价极高,行业趋势:数据底座已从“成本中心”跃升为“利润引擎”2026年数据仓库的代际演进传统离线数仓早已成为过去式,根据中国信通院2026年最新白皮书,超过78%的大型企业已完成向湖仓一体(L……

    2026年4月27日
    5600
  • 服务器怎么分区d盘?Windows服务器D盘分区详细教程

    服务器D盘分区的高效与安全,核心在于合理规划磁盘空间与正确使用系统自带工具或专业软件,遵循“备份先行、规划居中、操作稳健”的原则,能最大程度避免数据丢失风险并提升服务器性能,对于Windows Server环境,首选“磁盘管理”工具进行无损分区,而对于复杂需求,则需借助第三方专业分区助手,整个过程必须确保数据冗……

    2026年3月15日
    10400
  • gzip为何频繁宕机?Nginx开启gzip后报错502怎么办

    Gzip宕机通常并非由算法本身缺陷导致,而是由于并发连接数激增引发的内存溢出、CPU资源耗尽或配置不当导致的死锁,核心解决路径在于优化缓冲区大小、调整线程池配置及实施流量限速,在Web性能优化的日常维护中,Gzip压缩服务因其高效的数据传输能力被广泛部署,当高流量场景来临时,这个看似稳健的组件往往成为系统瓶颈……

    2026年6月22日
    2000
  • 服务器怎么买成都的?成都服务器购买流程详解

    购买成都地区的服务器,核心结论在于:明确业务合规性与网络延迟需求,优先选择本地具备IDC/ISP许可证的Tier 3+级别数据中心,并依据实际并发量精准匹配硬件配置,最终通过实地考察或深度测试完成采购决策,这一过程不仅关乎硬件性能的采购,更是一场关于网络质量、运维保障与合规安全的综合考量, 明确采购动机与合规性……

    2026年3月23日
    9600
  • 个人备案需要哪些资料?个人网站备案流程详解

    个人备案只需准备身份证正反面照片、域名证书及备案主体信息,通过接入商或管局系统提交即可,通常需1-20个工作日完成审核,很多初次接触建站的朋友,面对“备案”这两个字往往感到头大,备案并不是什么高深莫测的技术难题,而是一套标准化的行政审核流程,只要资料齐全、信息真实,整个过程就像去银行办业务一样清晰,对于个人而言……

    服务器运维 2026年6月7日
    3700

发表回复

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