Python requests带参数查询教程:GET传参与URL拼接
讲解requests用params字典发起带查询参数的GET请求,自动拼接URL并编码中文,避免手动拼接字符串出错,适合搜索、分页、筛选场景。
场景痛点
很多网页和接口不是一个固定URL,而是要在后面拼 ?q=关键词&page=1&size=20 这种查询串。手动拼字符串,遇到中文、空格、特殊符号就要做URL编码,很容易拼错。requests提供了 params 参数,传一个字典进去它自动搞定编码和拼接,写起来干净又可靠。
用到的库
pip install requests beautifulsoup4 lxml
完整代码
# 导入requests
import requests
def search_with_params(keyword, page=1, size=10):
"""带查询参数发起GET请求"""
# 把所有参数放到一个字典里,requests自动拼接并编码
params = {
"q": keyword, # 搜索关键词,中文会自动URL编码
"page": page, # 页码
"size": size, # 每页条数
}
# 基础URL,requests会自动在后面加 ?q=...&page=...
url = "https://httpbin.org/get"
resp = requests.get(url, params=params, timeout=10)
resp.encoding = resp.apparent_encoding
# 打印最终拼接出来的完整URL,方便调试
print("请求URL:", resp.url)
print("状态码:", resp.status_code)
# httpbin会把我们发过去的参数原样返回,用来验证
print("服务器收到的参数:")
print(resp.text)
return resp.text
def main():
# 搜索关键词用中文,演示自动编码
search_with_params("办公自动化", page=2, size=20)
if __name__ == "__main__":
main()
代码讲解
params接收一个字典,key就是参数名,value就是参数值。requests会自动把字典拼成?key1=value1&key2=value2格式。- 中文、空格、
&这些特殊字符会被自动做百分号编码,不需要自己调用urllib.parse.quote。 - 如果某个参数有多个值,可以传列表,例如
{"tag": ["python", "web"]},会拼成?tag=python&tag=web。 resp.url可以查看实际发出去的完整URL,调试时非常有用,能立刻看出参数有没有拼对。- 示例用
https://httpbin.org/get这个公开测试接口,它会把请求信息原样回显,适合学习验证。
运行结果
运行后会打印拼接好的完整URL(可以看到中文被编码成 %E5%8A%9E%E5%85%AC...),以及服务器返回的JSON,里面 args 字段就是它收到的查询参数,说明传参成功。
注意事项
- 参数值是数字、布尔值时也会自动转成字符串,不用手动
str()。 - 不要把敏感信息(密码、token)放在GET参数里,它们会出现在浏览器历史、服务器日志中。
- 同一个参数名要传多个值时,用列表而不是自己手动拼
key=1&key=2。 - 抓取时仍然要注意频率,带参数翻页时尤其容易一次性刷出大量请求。

更新时间:2026-09-14 20:47:59
上一篇:Python requests保持会话Session:跨请求保留Cookie