requests库及相关知识点(get,post区别,params与data区别)

一、requests库的常用方法

  1) 这是一种使用方式,即没有headers,只有参数。

import requests
r = requests.get('https://api.github.com/events', params = {'key': 'value'}) 
# 注意使用的是params
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
# 注意使用的是data

  2)第二种使用方式,加入headers(可加入访问的浏览器,身份认证等)

import requests
url = 'https://www.baidu.com/s?'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
    'Authorization': 'Bearer {}'.format(data_token)  # token认证
或者'Authorization': 'Appcode {}'.format(appcode)    #appcode认证(简单认证)
}
# 在get方法中添加params参数
response = requests.get(url, headers=headers, params={"wd": "赵丽颖"})

二、params与data的区别

params:

与get进行联用。是字典或者字节序列,作为参数增加到URL中。不仅访问URL,还可以向服务器携带参数。简单来讲也就是说对于原来的网址进行内容的提交形成新的url。

data:

与requests.post()进行联用

在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。

常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型;

而有时会遇到一种payload报文,这是一种json格式的报文,因此传入的报文对象也应该是格式的;

data={

    'xx':'xx'

}

import request

import json

# 1

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

# 2-json参数会自动将字典类型的对象转换为json格式

requests.post(url, json=data)

#很明显如果是data其格式必须为字符串这时候要进行json模块的转化,而json进行传的时候就不需要进行转换

三、get与post区别

GET方法

在GET方法中,数据将作为URL的参数发送,这些参数通常是由&符号分隔的名称和值对的字符串。通常,具有GET数据的URL将如下所示:

1

http://www.php.cn/action.php?name = john&age = 24

在URL中name和age都是GET参数,john和24是这些参数的值;多个“参数=值”可通过与&符号级联被嵌入URL里。人们只能通过GET方法发送简单的文本数据。

使用GET方法的优点和缺点

1、由于GET方法发送的数据显示在URL中,因此可以使用特定查询字符串值为页面添加书签。

2、GET方法不适合传递用户名和密码等敏感信息,因为这些信息在URL查询字符串中完全可见,并且可能作为访问页存储在客户端浏览器的内存中。

3、由于GET方法将数据分配给服务器环境变量,因此URL的长度是有限的。因此,要发送的总数据存在限制。

POST方法:

在POST方法中,数据作为包在与处理脚本的单独通信中发送到服务器;通过POST方法发送的数据在URL中不可见。

POST方法适用于可以传递大量信息的情况。当服务器通过采用POST的表单接收请求时,它在对URL进行请求之后立即传输表单输入的所有相关信息。

使用POST方法的优点和缺点

1、它比GET更安全,因为用户输入的信息在URL查询字符串或服务器日志中永远不可见。

2、可以传递的数据量有一个更大的限制,一个人可以使用POST发送文本数据和二进制数据(上传文件)。

3、由于POST方法发送的数据在URL中不可见,因此无法使用特定查询为页面添加书签。

举例具体来说:

import requests
 url='http://www.baidu.com'
#下面使用requests.request(method, url, **kwargs)
re=requests.request('GET',url)

经验证,可用。

我们试着传入一个字典,首先用params参数。

结果为:

亮点在url和args。

我们还用get方法,把dic这个字典传给data试试看。

亮点还是在args和url。惊喜地发现,dic这个字典没传进去。

这是因为:

params是用来发送查询字符串,而data是用来发送正文的。post方法和get方法的特性是:这两种参数post方法都可以用,get方法只能发查询字符串,不能发送正文。

接下来试试看post方法:

上面这是用data参数传字典的,亮点在form。

再试试用params参数传这个字典:

亮点在url和args。

所以,args,url与params参数有直接联系。而form与data有直接联系。

四、参考博客

python爬虫之 requests库的使用 - 灰信网(软件开发博客聚合) (freesion.com)

深入requests库params|data|json参数 | data (lmlphp.com)

(4条消息) requests模块params与data的区别_暴走的蜗牛g的博客-CSDN博客_params requests

GET和POST方法的区别是什么-php教程-PHP中文网

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值