我的知识记录

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
  • 抓取时仍然要注意频率,带参数翻页时尤其容易一次性刷出大量请求。

Python requests带参数查询教程:GET传参与URL拼接

标签:

更新时间:2026-09-14 20:47:59

上一篇:Python requests保持会话Session:跨请求保留Cookie

下一篇:Python requests POST提交表单教程:登录与数据提交示例