当前位置: 首页 > news >正文

requests 中data=xxx、json=xxx、params=xxx 分别什么时候用

如果是要做爬虫模拟一个页面提交,看原页面是post还是get,以及Content-Type是什么。

  • GET 请求 使用 params=xxx,查询参数会被编码到 URL 中。
  • POST 请求,Content-Type为 application/x-www-form-urlencoded的,使用 data=xxx,(常见于直接 HTML 表单提交)。
  • POST 请求,Content-Type为 application/json的 使用 json=xxx,常见于通过ajax提交。
  • POST 请求,Content-Type为 multipart/form-data的,有上传文件,使用files=files, data=xxx (常见于直接 HTML 表单提交)

-------

  • 如果post请求同时传递 data 和 json 参数时,requests 库会自动忽略 data,并且只发送 json 中的数据作为请求体
  • post请求可以带params=xxx 这个参数。response = requests.post(url, json=json_data, params=xxx) 不会报错。
  • GET 请求不能带 json=json_data 参数。若使你尝试传递 json=json_data 参数,requests 库会忽略它

-------- 

如果multipart/form-data中一次请求上传多个文件,则

    files = {
        'file1': ('file1.jpg', file1, 'image/jpeg'),
        'file2': ('file2.jpg', file2, 'image/jpeg')
    }

GET 请求:

import requests

url = 'https://example.com/api'
params = {
    'name': 'John',
    'age': 30
}

response = requests.get(url, params=params)

 相当于get访问 URL:https://example.com/api?name=John&age=30

POST请求:application/x-www-form-urlencoded

import requests

url = 'https://example.com/api'
data = {
    'name': 'John',
    'age': 30
}

response = requests.post(url, data=data)

相当于直接网页提交表单

POST请求 application/json  (常见于AJAX提交)

import requests

url = 'https://example.com/api'
data = {
    'name': 'John',
    'age': 30
}

response = requests.post(url, json=data)

POST请求 multipart/form-data

import requests

url = 'https://acc.abc.com/api/home/UploadIDCard'

# 文件部分
file_path = 'path/to/your/file.jpg'
with open(file_path, 'rb') as file:
    files = {
        'Files': ('idcard_front.jpg', file, 'image/jpeg')  # (filename, file-object, mime-type)
    }

    # 其他参数部分
    data = {
        'name': 'John',
        'age': 30
    }

    # 发起POST请求
    response = requests.post(url, files=files, data=data)

import requests

url = 'https://example.com/upload'

# 打开多个文件
file1_path = 'path/to/your/file1.jpg'
file2_path = 'path/to/your/file2.jpg'

with open(file1_path, 'rb') as file1, open(file2_path, 'rb') as file2:
    files = {
        'file1': ('idcard_front.jpg', file1, 'image/jpeg'),
        'file2': ('idcard_back.jpg', file2, 'image/jpeg')
    }

    # 其他参数部分
    data = {
        'name': 'John',
        'age': 30
    }
    # 发起POST请求,上传多个文件
    response = requests.post(url, files=files, data=data)

相关文章:

  • Linux·进程概念(下)
  • 【PostgreSQL】入门篇——介绍表的创建、主键、外键、唯一约束和检查约束的概念及其应用
  • vue2接入高德地图实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)
  • VPN简述
  • 国内旅游:现状与未来趋势分析
  • 商城系统难点
  • hdfs伪分布式集群搭建
  • Golang | Leetcode Golang题解之第455题分发饼干
  • 鸿蒙harmonyos next flutter通信之EventChannel获取ohos系统时间
  • 掌握RocketMQ4.X消息中间件(一)-RocketMQ基本概念与系统架构
  • MySQL 日志 - Binlog
  • 精益驱动的敏捷开发
  • c++11新特性
  • 【C#生态园】突破异步编程难题:深度解析.NET平台下的异步工具与库
  • 如何移除 iPhone 上的网络锁?本文筛选了一些适合您的工具
  • 深度学习:基于MindSpore实现CycleGAN壁画修复
  • (11)MATLAB莱斯(Rician)衰落信道仿真2
  • ASP.NET Core 创建使用异步队列
  • Python并发编程挑战与解决方案
  • Git介绍--github/gitee/gitlab使用
  • 最美西游、三星堆遗址等入选“2025十大年度IP”
  • 甘肃:今年6月前,由县级党委、政府制定农村彩礼倡导性标准
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 学习时报头版:世界要公道不要霸道
  • 人民日报:浙江着力提升民营企业核心竞争力
  • 射箭世界杯上海站摘得两银,中国队新周期冲击韩国缩小差距