1月9日学习内容整理:请求库requests之基于GET和POST请求,response对象的属性-程序员宅基地

技术标签: python  操作系统  

Requests模块介绍:

#介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)

#注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

#安装:pip3 install requests

#各种请求方式:常用的就是requests.get()和requests.post()
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
>>> r = requests.put('http://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('http://httpbin.org/delete')
>>> r = requests.head('http://httpbin.org/get')
>>> r = requests.options('http://httpbin.org/get')

#建议在正式学习requests前,先熟悉下HTTP协议
http://www.cnblogs.com/linhaifeng/p/6266327.html

 

 

 

一、基于GET请求

1、基本请求

response=requests.get(url)   url就是请求的地址

这就是发送了一个GET请求,返回一个response对象

2、get方法的参数

(1)headers:模拟http的请求头信息

get(url,

headers={

  "User-Agent" :  是http请求头中的一个字段,内容为操作系统版本,浏览器版本,服务器通常将这个字段作为检验请求来源的依据,

  "Referer"  :  代表请求的来源域名,也就是从哪点进来而产生的请求,比如我们从京东页面上点击一个按钮产生请求,那请求中的这个字段就是京东首页的域名,

})

(2)params:给get请求加上数据

方式一:在URL中加上?来携带数据,一般我们不这样用

若数据中有中文字符就需要我们进行编码,可以用urllib来对中文进行编码再拼接到URL中

from urllib.parse import urlencode
params={
    'wd':'美女',
}
url='https://www.baidu.com/s?%s' %urlencode(params,encoding='utf-8')

 

方式二:上述操作都可以用params参数来代替,既可以对中文字符进行编码,又可以拼接到URL中

response=requests.get('https://www.baidu.com/s?',
                    params={
                        'wd':'美女',
                        'pn':num
                    })

 

(3)cookie:主要应用在需要登录之后才能获取到的数据的网站,我们要在请求中加上cookie,直接在cookie={}中添加对应的键值对就行了

reponse=requests.get('https://github.com/settings/emails',
                    headers={
                        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
                    },
                    cookies={
                        'user_session':'CpxXbf5MvLuoRxVeIqUNHs6WlwUOkF4vMqcZ2IoKAZ5Sia-M'
                    }
                    )

 

 

二、基于POST请求

1、介绍

#GET请求
HTTP默认的请求方法就是GET
     * 没有请求体
     * 数据必须在1K之内!
     * GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
       2. 点击页面上的超链接也一定是GET请求
       3. 提交表单时,表单默认使用GET请求,但可以设置为POST


#POST请求
(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!



注意注意注意::::requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

 

2、基本请求

response  =  requests.post(url,

data={}

)

这就是发送了post请求,data参数是数据,在字典中写入一个个键值对就行

其它cookie和header参数都有

 

补充:::

》》》allow_redirects =  True/False

是否允许重定向,False就代表

》》》上面都是我们自己去处理cookie信息,requests模块也为我们提供了方法去处理cookie

session=requests.session()    就得到了一个session对象

发请求就用这个session对象去发

response=session.get()

response=session.post()

 

 

 

三、response对象的属性

get和post请求都会得到一个response对象

# 响应的文本数据
print(respone.text)

#响应的二进制数据,通常是图片视频之类
print(respone.content)

#响应的状态码
print(respone.status_code)

#响应的头部信息
print(respone.headers)

#响应的cookie信息,返回一个对象
print(respone.cookies)
#把响应的cookie值转换为字典形式
print(respone.cookies.get_dict())
#响应的cookie值中的键值对
print(respone.cookies.items())


print(respone.history)

#响应的编码,可以修改,默认编码为ISO-8859-1
print(respone.encoding)

 

转载于:https://www.cnblogs.com/wanghl1011/articles/8251765.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34204722/article/details/93258301

智能推荐

string与doule互相转换并保留两位小数_string转double保留两位小数-程序员宅基地

文章浏览阅读2.9k次。其实string与double、int的互转有一些函数可以直接用,例如: //doule转string string str1 = to_string(3.14); //int转string string str2 = to_string(4); //string转int int x= atoi(str2.c_str()); //string转double double y = stof(str1.c_str());但是不满足我想顺便四舍五入保留小数位的需求,所以自己写了两个函数。_string转double保留两位小数

azkaban任务报错java.lang.RuntimeException: The root scratch dir: /tmp/hive_azkaban kettle 时间长报错-程序员宅基地

文章浏览阅读3.2k次。azkaban运行任务的时候失败报错如下:23-03-2016 08:16:14 CST analyzer-kafka2hdfs_new ERROR - Exception in thread "main" org.apache.hive.service.cli.HiveSQLException: java.lang.RuntimeException: The root scratch d_azkaban kettle 时间长报错

PHP生成迅雷、快车、旋风等软件的下载链接代码实例-程序员宅基地

文章浏览阅读131次。<?php function Download() { $urlodd=explode('//',$_POST["url"],2);//把链接分成2段,//前面是第一段,后面的是第二段 $head=strtolower($urlodd[0]);//PHP对大小写敏感,先统一转换成小写,不然 出现HtTp:或者ThUNDER:这种怪异的写法不好处...

创建带有UTF-8 的声明的XMLDocument_xmlnewdoc utf-8-程序员宅基地

文章浏览阅读4.6k次。class Program { static void Main(string[] args) { // Create and load the XML document. XmlDocument doc = new XmlDocument(); string xmlString = "_xmlnewdoc utf-8

Jquery 多选下拉列表插件jquery multiselect-程序员宅基地

文章浏览阅读286次。有一个多选的需求,在网上找到了这个插件:multiselecthttps://github.com/ehynds/jquery-ui-multiselect-widgetcsdn博客上有这个插件的介绍,不少童鞋都问了这么个问题,怎么获取选中的值?真是个好问题,因为我在看demo的时候也发现了这个问题,呵呵!先简单说说这个插件: jquery-multisel..._multiselect 多级 多选插件 checkbox

解决android studio打包后安装APK提示“签名不一致,该应用可能已被修改。“_签名不一致该应用可能已被修改-程序员宅基地

文章浏览阅读8.4k次,点赞5次,收藏15次。现象解决办法修改applicationId名_签名不一致该应用可能已被修改

随便推点

新手不要再被误导!这是一篇最新的Xposed模块编写教程_xposedbridgeapi-82.jar-程序员宅基地

文章浏览阅读1.5k次,点赞3次,收藏7次。0x00 前言作者写于2018.11.21,我在转载时日期为2021.01.01,博客内容已经测试了,完全正确且可以运行,新手建议从此看起再看官方文档。在互联网上,关于Xposed模块编写的教程可谓是一抓一大把。但由于时间的推移,很多工具和方法都发生了变化(如Eclipse退出安卓编程舞台,AndroidStudio 不断升级导致其一些设置也随之变化等)也正因此,网上的教程往往有一些时限性,比如现如今 provide 这个关键字已经被舍弃了却仍有人在用,还有些说要把jar包放到lib文件夹而非lib_xposedbridgeapi-82.jar

SpringBoot异常处理_如何排除springboot默认的异常管理逻辑-程序员宅基地

文章浏览阅读288次。文章目录SpringBoot异常处理1. SpringBoot默认的异常处理方式1.1 原理分析1.2 取消默认异常处理逻辑2. 自定义异常处理逻辑2.1 方式一:实现ErrorPageRegistrar接口2.2 方式二:通过注解@ExceptionHandlerSpringBoot异常处理1. SpringBoot默认的异常处理方式1.1 原理分析SpringBoot内部已经进行了统一..._如何排除springboot默认的异常管理逻辑

第一范式、第二范式、第三范式、BCNF(BC范式)-程序员宅基地

文章浏览阅读7.6k次,点赞11次,收藏37次。范式原理笔记数据库关系数据理论----范式范式原理笔记什么是(范式)---范式介绍范式发展1、第一范式2、第二范式3、第三范式4、BCNF(扩展第三范式)什么是(范式)—范式介绍官方介绍,数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称1NF;在第一范式中满足进一步要求的为第二范式,其余的一次类推。还不懂?那么简单来说范式是一种标准,也就是你设计表结构是要符合规范。就好像是你装修自己的房子,你按照的标准越高,那么你的房子就更加的牢固安全。所谓“第几范_第一范式

【openresty】API disabled in the context of init_worker_by_lua_api disabled in the current context-程序员宅基地

文章浏览阅读4.9k次。在调用init.lua初始化的过程中,我调用了mysql数据库接口初始化数据,然后就提示了此错误:2020/06/28 19:56:40 [error] 24673#24673: *7 [lua] init.lua:2: init , context: init_worker_by_lua*2020/06/28 19:56:40 [error] 24673#24673: *7 [lua] data.lua:11: load(): context: init_worker_by_lua*2020/0_api disabled in the current context

openlayers6【八】地图覆盖物overlay详解_ol.overlay-程序员宅基地

文章浏览阅读5k次,点赞4次,收藏16次。文章目录1. overlay 简述2. overlay 属性2. overlay 事件4. overlay 方法5. overlay 实例5.1 overlay 实现 windowInfo 弹窗5.2 overlay 实现 label标注信息5.3 overlay 实现 text文本信息1. overlay 简述overlay是覆盖物的意思,顾名思义就是在地图上以另外一种形式浮现在地图上,这里很多同学会跟图层layers搞混淆,主要是放置一些和地图位置相关的元素,常见的地图覆盖物为这三种类型,如:win_ol.overlay

matlab 广义互相关,广义互相关求时延的问题-程序员宅基地

文章浏览阅读708次。clear all%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%获得语音文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[x,fs,nbits]=wavread('bluesky3.wav'); %%%%%%打开wav文件%fs=8000%nbits=16x=x/max(abs(x)); %%%%%幅度..._matlab中广义互相关scot求时延

推荐文章

热门文章

相关标签