一、文件上传

  1、模拟网站提交文件

提交此图片,图片名称:timg.jpg

import requests

files={
'file':open('timg.jpg','rb')
}
response=requests.post('http://httpbin.org/post',files=files)
print(response.text)
{
"args": {},
"data": "",
"files": {
"file": "data:application/octet-stream;base64..."
},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "",
"Content-Type": "multipart/form-data; boundary=bfa4e305bf1a07aeff0b161b6b6acd98",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.20.1"
},
"json": null,
"origin": "119.123.198.80",
"url": "http://httpbin.org/post"
}

提交文件得到的返回信息

二、cookies  (requests获取和设置cookies只需要一步)

  1、什么是cookie

  使用r.cookies获取cookie(key,value) 

import requests

r=requests.get("http://www.hao123.com")
print(r.cookies) for key,value in r.cookies.items():
print(key+'='+value)

  结果显示cookies

<RequestsCookieJar[<Cookie BAIDUID=D08FC3C77CD769084E0F74D7A4B1415D:FG=1 for .hao123.com/>, <Cookie hz=0 for .www.hao123.com/>, <Cookie ft=1 for www.hao123.com/>, <Cookie v_pg=normal for www.hao123.com/>]>
BAIDUID=D08FC3C77CD769084E0F74D7A4B1415D:FG=1
hz=0
ft=1
v_pg=normal

  2、cookie的作用:维持登录状态

    如何使用cookie:在header中包含登录信息的cookies即可维持回话登录.

import requests

headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
'cookie':'_zap=90f75832-31eb-4d2d-b35f-9ccaf9fb751d; d_c0="ABDix0gVng6PTouChpyAoAQ3G7to4zgcmSA=|1543906948"; capsion_ticket="2|1:0|10:1543906948|14:capsion_ticket|44:YjVkZTgwZGJhMDkxNDk1Nzk0ZWQzY2QxNmY3Y2I4ZTA=|5eb3fc941322cc1a46641b7a01cf3e1d4bd2af3e957c9034e11bf5ce866beef4"; q_c1=cf87a31041fd439286ff979925591375|1543906958000|1543906958000; r_cap_id="Y2Y5ODA2MzcwNjc2NGY2NTg3YzBmMjY0ODgzNzVjZTY=|1543906958|90e763acce4047123b3af3f2704353c655212d04"; cap_id="YjY2MmE1ZDZkNWRmNDY3NWI0ZTE0NDM5OWQ4ZGIyN2Y=|1543906958|cfd125126f4cb0595540b10a1345fe83ed78b54c"; l_cap_id="YzhkZmY1ZGE4MTI5NGFkY2I2OWEyNzEzYmUzYzc1NTk=|1543906958|cfb980d103d69a8a16e49fbc84d6c9eb9f259656"; z_c0="2|1:0|10:1543907047|4:z_c0|92:Mi4xdVdsa0RRQUFBQUFBRU9MSFNCV2VEaVlBQUFCZ0FsVk41M1R6WEFEcGZiR3REaExaUzU2QVI1RUs1cjFHSWhlTGRn|8cffbfc2e83f1bbf0b257fe911a35f32e1411981c36631e680d48b52cbb4acdf"; __gads=ID=ca4c27d035179b38:T=1543907482:S=ALNI_MaXKoFRpK-yi_viwOXIAxef01d82A; tst=h; _xsrf=90cd6bdbf65ff7b9f06741d408360edf; _xsrf=nMfSyfddjAeWdq5Fjx3UFFJClFbYdPO4; __utma=155987696.97682671.1543926682.1543926682.1543926682.1; __utmz=155987696.1543926682.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); OUTFOX_SEARCH_USER_ID_NCOO=1988278338.5008798; tgw_l7_route=29b95235203ffc15742abb84032d7e75'
}
response=requests.get('http://www.zhihu.com',headers=headers) print(response.status_code)
#请用自己的cookie

  

三、会话维持session

   什么叫做会话维持:登陆成功后,在使用request希望能访问之后的页面,不需要重新输入账户密码的方式叫做会话维持。

requests请求多个网页相当于启动了多个浏览器,这样就要多次设计cookies

#Session回话维持
import requests
s=requests.Session()
r1=s.get('http://httpbin.org/cookies/set/number/123456789')
r2=s.get('http://httpbin.org/cookies')
print(r1.text)
print(r2.text)
{
"cookies": {
"number": ""
}
} {
"cookies": {
"number": ""
}
}

执行结果(网站的cookie信息一致)

不适用Session回话维持,两次访问的结果如下

import requests
s=requests
r1=s.get('http://httpbin.org/cookies/set/number/123456789')
r2=s.get('http://httpbin.org/cookies')
print(r1.text)
print(r2.text)

不适用Session代码

{
"cookies": {
"number": ""
}
} {
"cookies": {}
}

不适用Session的cookie

  利用 Session ,可以做到模拟同一个会话而不用担心 Cookies 的问题。 它通常用于模拟登录
成功之后再进行下一步的操作 。

  

四、SSL证书验证 

impo:r:t requests
于ram requests.packages import urllib3
urllib3 .disable_warnings()
response = requests.get (’ https : //州 .12306 . cn ’, verify= False)

屏蔽证书验证警告

五、代理设置proxies

(1)代理格式1:

proxies={
'http':'http://10.10.1.10:3128',
'https':'http://10.10.1.10:1080'
}
res=requests.get('http://www.taobao.com',proxies=proxies)

(2)代理格式2:代理需要使用 HTTP Basic Auth ,可以使用类似 http://user:password@host:port 这样的语法来设置代理 。

proxies = {
"http””http://user:password@10.10.1 .10:3128/”,
}
requests . get (咱ttps : I lwww. taobao. com”, proxies=proxies)

六、超时设置(timeout=)

  超时一秒就开始报超时

res=requests.get('http://www.taobao.com',timeout=1)

七、身份认证

  1、格式一:

import requests
from requests.auth import HTTPBasicAuth
r=requests.get('http://ww.baidu.com',auth=HTTPBasicAuth('username','password'))

  2、格式二

import requests
r=requests.get('http://ww.baidu.com',auth=('username','password'))

八、构造请求结构--Prepared Request

from requests import Request,Session

url='http://httpbin.org/post'

data={
'name':'big pig'
}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
s=Session()
#构造请求体
req=Request('POST',url,data=data,headers=headers)
prepped=s.prepare_request(req)
r=s.send(prepped)
print(r.text)

  这里我们引入了Request,然后用url、data和headers参数构造了一个Requestd对象,这时需要再调用Session的prepare_request( )方法将其转换为Prepare Request对象,然后调用send 方法发送,其运行结果:

{
"args": {},
"data": "",
"files": {},
"form": {
"name": "big pig"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
},
"json": null,
"origin": "117.136.79.133",
"url": "http://httpbin.org/post"
}

运行结果

 

requests 进阶用法学习(文件上传、cookies设置、代理设置)的更多相关文章

  1. THINKPHP源码学习--------文件上传类

    TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...

  2. SpringMVC学习--文件上传

    简介 文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发. springmvc中对多部件类型解析 在 页面form中提交enctype="m ...

  3. [六]SpringMvc学习-文件上传

    1.单文件上传 1.1修改配置文件 <bean id="multipartResolver" class="org.springframework.web.mult ...

  4. HTML5 进阶系列:文件上传下载

    前言 HTML5 中提供的文件API在前端中有着丰富的应用,上传.下载.读取内容等在日常的交互中很常见.而且在各个浏览器的兼容也比较好,包括移动端,除了 IE 只支持 IE10 以上的版本.想要更好地 ...

  5. Js学习文件上传

    // 文件上传 jQuery(function() { var $ = jQuery, $list = $('#thelist'), $btn = $('#ctlBtn'), state = 'pen ...

  6. SpringBoot 文件上传、下载、设置大小

    本文使用SpringBoot的版本为2.0.3.RELEASE 1.上传单个文件 ①html对应的提交表单 <form action="uploadFile" method= ...

  7. struts文件上传拦截器maximumSize设置文件大小不起作用

    <interceptor-ref name="fileUpload">                <param name="allowedTypes ...

  8. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  9. Servlet3.0学习总结(三)——基于Servlet3.0的文件上传

    在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...

随机推荐

  1. qt之菜单项定制

    qt实现菜单,简单的界面QMenu+QAction完全可以实现,在加上qss的支持,可以定制出比较美观的菜单,qt的菜单一般用在托盘.按钮和工具栏上. 当然啦,也有很多软件有比较美观的托盘菜单,比如3 ...

  2. Java 多线程(一)—— 概念的引入

      并发和并行 并行:指两个或多个时间在同一时刻发生(同时发生): 并发:指两个或多个事件在一个时间段内发生. 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 C ...

  3. 浅谈新的布局方式-flex

    引言: 网页布局在flex出来之前,是由盒模型为底子,float,position,table,百分比来进行布局的,重绘的比较多,影响性能,复杂又不好维护.flex布局,可以简便.完整.响应式地实现各 ...

  4. vs2012 aps.net 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为

    系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.net 4.5,这样您的网站才可能正确 ...

  5. Chapter 4 Invitations——11

    "Bella?" His voice shouldn't have been so familiar to me, as if I'd known the sound of it ...

  6. Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)

    一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...

  7. Powershell:关于hashtable你想知道的一切

    译者语:本篇为一篇译文,详细介绍了在powershell中如何使用hashtable这种数据类型.本文为本人2018年最后一篇博文(哈哈,一年内写没写几篇),也是本人的第一次译文,有不足之处还请指教. ...

  8. mac用pecl安装swoole可能出现的报错及解决办法

    一.用pecl安装swoole 2018年4月,由于homebrew的变动,导致无法使用brew install的方式安装php的扩展,现在改为用pecl安装,pecl安装swoole的方法为: pe ...

  9. selinux基本概念

    TE模型 主体划分为若干组,称为域 客体划分为若干组,每个组称为一个类型   DDT(Domain Definition Table,域定义表,二维),表示域和类型的对应访问权限,权限包括读写执行 一 ...

  10. Java学习笔记之——线程的生命周期、线程同步

    一. 线程的生命周期 新建(new Thrad):创建线程后,可以设置各个属性值,即启动前 设置 就绪(Runnable):已经启动,等待CPU调动 运行(Running):正在被CPU调度 阻塞(B ...