详解python requests中的post请求的参数问题

 更新时间:2021年03月26日 10:12:40   作者:润年  
这篇文章主要介绍了详解python requests中的post请求的参数问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题:最新在爬取某站点的时候,发现在post请求当中,参数构造正确却获取不到数据,索性将post的参数urlencode之后放到post请求的url后面变成get请求,结果成功获取到数据,对此展开疑问。

1.http请求中Form Data和Request Playload的区别:

  Ajax post请求中常用的两种参数形式:form data 和 request payload

  get请求的时候,我们的参数直接反映在url里面,为key1=value1&key2=value2形式,如果是post请求,那么表单参数是在请求体中,也是以key1=value1&key2=value2的形式在请求体中。通过chrome的开发者工具可以看到如下

a.Form Data类型:

这种情况有两种处理方式,一个是把这个post请求变成get请求,即把请求参数通过"?key1=value1&key2=value2"拼接在url当中,然后以get方式请求就可以了:response = requests.get(url,headers=headers),其中url为拼接的url

另一种是仍然用post请求,将参数放在data中:response = requests.post(url,headers=headers,data=data),其中url为post url.

注意上图中红圈内的内容,这里请求头中的Content-Type为application/x-www-form-urlencoded,点击Form Data旁边的view source,变成了key1=value1&key2=value2形式,如下图,这时你可以将这部分内容加到post的Request URL后面使它变成一个get请求,就可以获取到数据了,

b.Request Payload类型

同样在chrome浏览器开发者工具中可以看到它们不同的地方,Content-Type为application/json,表明需要传的是一个json类型的对象,点击view source,如下图

自动变成了json类型,这时必须发post请求,将这json对象传入才可获取数据。形如:

response = requests.post(url,json=data,headers=headers) 相比普通的post,这个post参数中的data一定要序列化才行。

参考:https://stackoverflow.com/questions/10494574/what-is-the-difference-between-form-data-and-request-payload

到此这篇关于详解python requests中的post请求的参数问题的文章就介绍到这了,更多相关python requests post请求参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Django的信号机制

    深入理解Django的信号机制

    本文主要介绍了深入理解Django的信号机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)

    十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)

    这篇文章主要介绍了Python实战项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python中xml和json格式相互转换操作示例

    Python中xml和json格式相互转换操作示例

    这篇文章主要介绍了Python中xml和json格式相互转换操作,结合实例形式分析了xmltodict库的安装及xml格式与json格式数据相互转换操作技巧,需要的朋友可以参考下
    2018-12-12
  • python判断设备是否联网的方法

    python判断设备是否联网的方法

    这篇文章主要为大家详细介绍了python判断设备是否联网的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python实现短网址ShortUrl的Hash运算实例讲解

    Python实现短网址ShortUrl的Hash运算实例讲解

    这篇文章主要介绍了Python实现短网址ShortUrl的Hash运算,较为详细的分析了Python短网址运算的算法原理与相关实现技巧,需要的朋友可以参考下
    2015-08-08
  • 详解Django定时任务模块设计与实践

    详解Django定时任务模块设计与实践

    这篇文章主要介绍了详解Django定时任务模块设计与实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • virtualenv实现多个版本Python共存

    virtualenv实现多个版本Python共存

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用
    2017-08-08
  • Python绘制惊艳的桑基图的示例详解

    Python绘制惊艳的桑基图的示例详解

    很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况。这个时候就需要桑基图,它通常描绘 从一个实体(或节点)到另一个实体(或节点)的数据流。本文将利用Python绘制惊艳的桑基图,需要的可以参考一下
    2022-02-02
  • 详解Python requests 超时和重试的方法

    详解Python requests 超时和重试的方法

    这篇文章主要介绍了详解Python requests 超时和重试的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Python线程threading模块用法详解

    Python线程threading模块用法详解

    这篇文章主要介绍了Python线程threading模块用法,结合实例形式总结分析了Python线程threading模块基本功能、原理、相关函数使用方法与操作注意事项,需要的朋友可以参考下
    2020-02-02

最新评论