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 requestimport json# 1requests.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 |
|
在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 requestsurl='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中文网
requests库及相关知识点(get,post区别,params与data区别)相关推荐
- Elastic:集群相关知识点总结(一)数据流 Data Stream、索引生命周期 ILM、可搜索快照 searchable snapshots、跨集群搜索 CCS、跨集群复制 CCR
0.引言 集群管理是ES的核心重点,因此相关的知识点至关重要,本期主要针对数据流.索引生命周期.可搜索快照.跨集群搜索.跨集群复制进行讲解 1.数据流 Data Stream 官方文档:Data st ...
- 爬虫笔记(一)——Requests库
文章目录 写在前面 一.Requests库入门 1.Requests库的安装 (1)安装Requests库 (2)测试Requests库 2.Requests库的get()方法 (1) get()方法 ...
- 接口测试 — 使用Requests库发送POST请求
POST请求用于向服务器提交数据,比如提交一个表单新建一个用户.或修改一个用户信息等操作. 对于POST请求,我们可以通过浏览器开发者工具或者其他外部工具来进行抓包,得到请求的URL.请求头(requ ...
- Requests库与response属性
Requests库与Response属性 一.安装 二.原理 三. 方法 1. requests库的几个主要方法 1.1 requests.request方法 1.2 requests.get方法 1 ...
- Crawler:基于BeautifulSoup库+requests库+伪装浏览器的方式实现爬取14年所有的福彩网页的福彩3D相关信息,并将其保存到Excel表格中
Crawler:Python爬取14年所有的福彩信息,利用requests库和BeautifulSoup模块来抓取中彩网页福彩3D相关的信息,并将其保存到Excel表格中 目录 输出结果 核心代码 输 ...
- python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码
(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2) GET方式提交的数据最多只能有1024 Byte,而P ...
- 浅谈Python两大爬虫库——urllib库和requests库区别
一.前言 在使用Python爬虫时,需要模拟发起网络请求,主要用到的库有requests库和python内置的urllib库,一般建议使用requests,它是对urllib的再次封装. 那它们两者有 ...
- python gpu加速库比matlab快吗_Python之Unittest和Requests库详解
1.按类来执行 import unittest class f1(unittest.TestCase): def setUp(self): pass def tearDown(self): pass ...
- 第07讲:入门首选,Requests 库的基本使用
上一课时我们了解了一些学习爬虫所需要的基本知识.从本课时开始,我们正式步入Python 爬虫的大门. 学习爬虫,最基础的便是模拟浏览器向服务器发出请求,那么我们需要从什么地方做起呢?请求需要我们自己来 ...
- python中使用requests库获取昵图网图片,且正则中re.S的用法
python中使用requests库获取图片,且正则表达式中re.S的用法以及r.text和r.content的区别和搜索关键词 这里我获取的是昵图网的图片 代码附上 这里我获取的是2020的图片 i ...
最新文章
- 代码详解 | 用Pytorch训练快速神经网络的9个技巧
- sql server中的decimal或者numeric的精度问题 (转载)
- “旧城改造”的背后——银泰新零售阿里云解决方案(上)
- 1分钟了解CDN内容分发技术
- R中大数据量数据框的合并慎重使用rbind
- python self 值自动改变,在python中对self的理解
- 为什么修改了ie级别里的activex控件为启用后,还是无法下载,显示还是ie级别设置太高?
- 使用LSTM建立seq2seq模型进行语言翻译
- 【逆强化学习-1】学徒学习(Apprenticeship Learning)
- python字典求平均值_Python - 字典中各个键的每个值的均值
- Oracle使用数据泵 (expdp/impdp)实施迁移
- centos8对外开发指定接口
- 同样一句代码,在类内调用,跟类外调用结果不同?
- 机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻
- mike21 matlab tools,Mike post process with Matlab toolbox
- DTcms-【知识点】-知识点缴获
- 2020互联网公司中秋礼盒大比拼(22家互联网厂商)
- Java学习十四,JDBC,反射
- git基础教程(11) git checkout命令,掌握这些足以
- Owin + WebApi + OAuth2 搭建授权模式(授权码模式 Part I)
热门文章
- 通通WPF随笔 3 艺术二维码素材生成器
- python 通达信k线_python日线通达信,通达信 主图默认显示每只股票上市以来所有日线...
- java开发接口文档_java之接口文档规范
- 桥接命令brctl的用法
- learun通用权限系统框架功能实现设计
- 17个值得收藏的国内外短信接码平台合集
- TCPDF支持php7,php – 我不能要求tcpdf库
- 嵩天python测验_嵩天老师《Python语言程序设计》第2周测试题笔记
- 解决IDEA中leetcode插件出现中文乱码问题
- 用计算机思维认识摩斯密码(摩斯密码速记)