应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Requests模块简介安装

  Requests模块简介与安装
  在python的标准库中,随人提供了urllib,utllicb2,httplib,但是做接口测试,requests使用更加方便快捷,正如官方说的,让HTTP服务人类。
  Requests是用python语言基于urllib编写的,采用的是Apache2Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作。
  Requests模块安装:
  安装方式一:
  执行pipinstalllUrequests联网安装requests
  安装方式二:
  进入https:pypi。orgprojectrequests
  下载并解压requests2。19。1。tar。gz,然后用cmd进入解压目录,使用命令Pythonsetup。pyinstall安装requests
  备注:在pycharm中使用的时候如果无法显示模块,必须通过pycharmfilesettingprojectinterpreter再安装导入一次。
  Requests模拟http请求
  1、模拟get请求
  importrequests
  responserequests。get(https:www。baidu。com)
  print(response。content。decode(utf8))
  上例发送无参数的get请求,response。content是二进制模式,可以下载视频之类的,如果想看的话需要decode成utf8格式。而response。text返回的是Unicode格式,通常需要转换为utf8格式,否则就是乱码。
  如果想用text方法并解决乱码维妮塔,可以通过如下代码实现:
  print(response。content。decode(utf8))
  print(response。text)
  2、模拟带参数的get请求
  importrequests
  写法一:
  responserequests。get(https:api。weixin。qq。comcgibintoken?granttypeclientcredentialappidwx6e80aecfffd74d44secret8e87c882c1076e95f675db64a77925bb)
  print(response。content。decode(utf8))
  写法二:
  data{granttype:clientcredential,appid:wx6e80aecfffd74d44,secret:8e87c882c1076e95f675db64a77925bb}
  responserequests。get(https:api。weixin。qq。comcgibintoken,paramsdata)
  print(response。content。decode(utf8))
  上面引用微信平台的接口为例,其中APPID和APPSECRET值获取的方式是:进入微信公众平台开发者文档:https:mp。weixin。qq。comwikihome进入开始开发接口测试号申请菜单,通过微信扫一扫生成测试号扫码后,生成appID和appsecret自定义请求头
  importrequests
  data{wd:requests接口测试}
  headerinfo{
  useragent:Mozilla5。0(WindowsNT10。0;Win64;x64)AppleWebKit537。36(KHTML,likeGecko)Chrome104。0。0。0Safari537。36
  }
  responserequests。get(https:www。baidu。com,paramsdata,headersheaderinfo)
  print(response。content。decode(utf8))
  上述例子是百度进行查询的接口,在实际中需要添加UserAgent头部信息,否则请求返回的数据错误。
  Headersheaderinfo表示如果需要增加请求头,可以把dict类型的键值对传给headers参数即可。模拟post请求
  接口信息如下:
  接口功能:新建用户标签
  请求方式:POST
  接口地址:https:api。weixin。qq。comcgibintagscreate?accesstokenACCESSTOKEN
  上传数据格式:json数据{tag:{name:广东}}
  importrequests
  importjson
  urlhttps:api。weixin。qq。comcgibintagscreate
  info{tag:{name:广东11}}
  data{accesstoken:61r40JB6tNPhNori626wxl9RN27F6oiq0vLvg9Nzt4l1g2Vyr4Zk4ySzs5CoER8oxblbQFcpsGAiHX1zUPOJPEmE5QQq0NjHlVSlC8yUfkOS7pfk7OvZzL5xJq65HAPT12FtCZOzsQ19qDYTcADARMH}token值为之前获取accesstoken的值
  headers{ContentType:applicationjson}发送json数据必带的头部信息
  responserequests。post(url,paramsdata,datajson。dumps(info),headersheaders)
  print(response。content。decode(utf8))
  备注:json。dumps(),用于将dict类型的而数据转成json格式编码的字符串。
  通过上面的例子,可以知道,post请求的参数是通过data方式来传递的。Post的请求参数一般有from表单、json数据、文件等。用requests模块处理方式如下:
  from表单(使用dict类型传输):
  postResponserequests。post(url,data{key:value})
  json数据:
  方式一:(需要使用json模块)jsonParams{key:value}
  Headers{ContentType:applicationjson}
  postJsonResponserequests。post(url,headersheaders,datajson。dumps(jsonParams))
  方式二:jsonParams{key:value}
  headres{ContentType:applicationjson}
  postJsonResponserequests。post(url,headersheaders,jsonjsonParams)
  文件上传:
  简单处理:
  filepathC:UserskcadmiDesktopjuneyao。docx
  files{file:open(filepath,rb)}
  fileResponserequests。post(url,filesfiles)
  显式地设置文件名,文件类型和请求头;
  files{file:(report。xls,open(report。xls,rb),applicationvnd。msexcel,{Expires:0})}
  fileResponserequests。post(url,filesfiles)
  Requests官方帮助文档实例链接:
  http:httpbin。orgpost
  Requests模块获取响应内容
  响应包括响应行、响应头、响应正文内容,这些返回的响应信息都可以通过Requests模块获取。这些获取到的响应内容也是接口测试执行得到的实际结果。
  获取响应行:
  rrequests。get(https:www。baidu。com)
  print(r。statuscode)获取响应状态码
  print(r。reason)获取响应信息
  获取响应头
  print(r。headers)获取响应头,返回的是dict类型,可以继续使用get获取指定的值
  获取其它响应信息:
  print(r。url)获取请求地址
  print(r。cookies)获取cookies
  print(r。encoding)获取响应的编码格式
  依据不同响应正文内容的情况,Requests模块有四块不同的处理方式:
  响应内容:
  rrequests。get(https:www。baidu。com)
  print(r。text)
  Requests会自动解码来自服务器的内容。大多数unicode字符集都能被五逢地解码。请求发出后,Requests会基于HTTP头部对响应的编码作出有根据的推测。当你访问r。text之时,Requests会使用,其推测的文本编码。r。text使用后乱码的几率很大,可以先用r。encoding属性来改变编码,如下所示:
  rrequests。get(https:www。baidu。com)
  r。encodingutf8
  print(r。text)
  二进制响应内容:
  对于非文本请求,r。content能以字节的方式访问请求响应体。且Requests模块会自动为你解码gzip和deflate传输编码的响应数据。
  使用r。content处理普通的行营返回:
  rrequests。get(https:www。baidu。com)
  print(r。content。decode(utf8))
  使用r。content下载图片文件:
  fromPILimportImage
  fromioimportBytesIO
  rrequests。get(https:www。baidu。comimgbdlogo1。png)
  imgimage。open(BytesIO(r。content))
  img。save(test。png)
  JSON响应内容:
  Requests中有一个内置的JSON解释器r。json(),处理返回的JSON数据,使用后,会把返回的数据作为一个python中的json数据对象看待。如果JSON解释失败,r。json()就会抛出异常。
  举例:
  data{granttype:clientcredential,appid:wx8f5d6a0a65df03a2,secret:fbeaae831dbb54a981faf12d554a5352}
  responserequests。get(https:api。weixin。qq。comcgibintoken,paramsdata)
  jsondataresponse。json()
  print(jsondata〔accesstoken〕)普通键值对直接取值
  原始响应内容:(一般不使用)
  如果需要获取来自服务器的原始套接字响应,可以使用r。raw,如果确定要获取的话,还需要在初始请求中设置streamTrue。
  rrequests。get(https:www。baidu。com,streamTrue)
  print(r。raw。read(1))
  Requests模拟高级操作代理设置
  代理(英文:Proxy),也称网络代理,是一种特殊的网络服务,英文全称是(ProxyServer),其功能就是代理网络用户去获取网络信息。形象的说:它是网络信息的中转站。代理服务器就好像一个大的Cache,这样就能显著提高浏览器速度和效率。
  Requests模块设置代理的方式如下:
  普通代理:
  importrequests
  proxies{http:http:127。0。0。1:8888,https:https:127。0。0。1:8888}
  rrequests。get(https:www。taobao。com,proxiesproxies)
  print(r。content。decode(utf8))
  包含用户名和密码:
  importrequests
  proxies{http:http:user:password127。0。0。1:9743}
  responserequests。get(https:www。taobao。com,proxiesproxies)超时设置
  Requests模块可以设置接收数据的超时时间,超出设定的时间还没有数据返回,就抛出异常。超时设置有两种类型表达:float、tupleimportrequests
  response01requests。get(https:www。baidu。com,timeout0。0001)表示接收数据的超时时间
  response02requests。get(https:www。baidu。com,timeout(0。1,0。2))0。1代表链接超时,0。2表示接收数据的超时时间(单位是秒)
  接收数据的超时时间(单位是秒)
  如果远端服务器很慢,你可以让Request永远等待,传入一个None作为timeout值重定向设置
  在请求url时,服务器会自动把我们的请求重定向,可以使用r。history来查看重定向。如果不想进行自动重定向,可以用参数allowredirects关闭。
  rrequests。get(http:www。360buy。com)
  print(r。history)
  rrequests。get(http:www。360buy。com,allowredirectsFalse)session处理
  部分接口需要先登录网址,才能有权限进行调用,这时可以使用到session,具体操作时:先使用网址的登录api进行登录,得到session后,然后用该session来请求其它的接口。示例代码如下:
  srequests。Session()
  logindata{formemail:youremailexample。com,formpassword:yourpassword}
  s。post(http:pythontab。comtestLogin,logindata)
  rs。get(http:pythontab。comnotification)
  5、请求中携带cookies
  对于某些网站,登录然后从浏览器中获取cookies,以后就可以直接拿着cookie登录了,
  无需输入用户名密码。
  importrequests
  Cookies{usersession:value}
  responserequests。get(https:github。comsettingsemails,cookiesCookies)
  6、SSLCertVerification
  很多网站都是https,但是不用证书也可以访问,大多数情况都是可以携带也可以不携带证书如知乎、百度等是可带可不带担忧硬性要求的,则必须待,比如对于定向的用户,拿到证书后才有权限访问某个特定网站。
  举例:https:www。12306。cnimportrequests
  responserequests。get(https:www。12306。cn)如果是ssl请求,首先检车证书是否合法,不合法则报错
  responserequests。get(https:www。12306。cn,verifyFalse)不验证证书,报警告,返回200
  Pipinstallupgradeforcereinstall‘requests2。6。0’urlib3
  fromrequests。packageimporturlib3
  Urlib3。disablewarnings()关闭警告
  Responstrequests。get(‘https:www。12306。cn’,verifyFalse)
  加上证书:(最好的解决方案)
  Responserequests。get(‘https:wwww。12306。cn’,cert(‘pathserver。crt’,’pathkey’))异常处理
  遇到网络问题(如:DNS查询失败、拒绝链接等)时,Requests会抛出一个connectionError异常。如果HTTP请求返回不成功的状态码,Response。raiseforstatus()会排除一个HTTPError异常。
  若请求超时,则抛出一个Timeout异常。
  所有Requests显示抛出的异常都继承自requests。exceptions。RequestException。
  importrequests
  fromrequests。exceptionsimportReadTimeout,ConnectionError,RequestException
  try:
  responstrequests。get(http:httpbin。orgget,timeout0。5)
  print(responst。statuscode)
  exceptReadTimeout:
  print(Timeout)
  exceptConnectionError:
  print(connectionerror)
  exceptRequestException:
  print(Error)

联盟第6支!锁定季后赛!8换1大交易赌对了?恭喜骑士锁定季后赛,他们成为本赛季联盟第6支、东部第4支球队!其余五队分别是雄鹿、凯尔特人、76人、掘金和灰熊。自从2018年詹姆斯离队之后,骑士首次打进季后赛。从1998年至……明前茶会更好的口感吗?龙井新茶首测,贡牌23年高山龙井评测来大有学问正值春分时节,绿茶采摘季明前阶段正在如火如荼的展开,今天是明前龙井首测,测试的是去年表现较好的贡牌高山龙井。贡牌也是西湖龙井中的知名品牌,西湖龙井有狮、龙、……前乐透秀里夫斯能在湖人得到那么多角色是因为湖人垃圾直播吧3月26日讯前NBA球员拉沙德麦坎茨近日做客阿里纳斯的Gil’sArena播客节目,并聊到了近期发挥出色的湖人球员里夫斯。麦坎茨显然对里夫斯的实力相当不以为然,他说……四川达州春来通川李最美魅力通川短视频大赛,万元大奖重磅来袭!三月已至,达州市通川区各地的李花竞相开放,花满枝桠。春风吹拂,漫天纷飞的李花,犹如一幅绝美的画卷,引来八方游客踏春赏花,驻足拍照,尽情享受春花烂漫的美景。看到这美丽的春色……目前出境最热国家机票价格出炉3月10日,文化和旅游部办公厅发布关于试点恢复旅行社经营中国公民赴有关国家(第二批)出境团队旅游业务的通知。2023年3月15日起,试点恢复全国旅行社及在线旅游企业经营中国公民……C给PDF每一页都加上自己的图片logo标识自己做了一个PDF说明文件给客户,现在需要在每一页上都加上自己的logo图片,具体操作过程如下:建项目这些就省略了,直接上代码:usingiTextSharp。text。pdf……湘西不夜城大型套圈圈活动欢乐上演一瞄,一比,一投,中!大型套圈圈活动在湘西不夜城欢乐上演唤起大家对童年美好时光的回忆共度一段精彩快乐的时光人头攒动,气氛热烈满满的礼品,一个个套圈……奇怪的名字,安静的地方云南。。。一个让人不得不爱的地方苍山不是山洱海不是海你要知道云南不止有风花雪月的苍山洱海还有个地方叫做普者黑这个名字很怪的地方有着云南绝美的夏天普者黑汉语的意思是鱼……不满日本干预太佛系,我花4000万为自闭症女儿开机构雨田出生于中国,婚后跟日籍丈夫定居日本千叶县。2019年,35岁雨田生下女儿,不久她发现孩子发育可能有问题。女儿两岁时,被日本医院确诊为自闭症。据澎湃新闻2017年报道,……杨希参加西班牙人B队的训练,分组对抗跟谭凯元一组直播吧2月22日讯据西甲皇家西班牙人足球俱乐部官方消息,中国球员杨希参加西班牙人B队的训练,分组对抗跟谭凯元一组。今年17岁的杨希年少随父母移居西班牙,12岁进入西班牙人……36岁的杨幂身材火辣,前凸后翘似20岁少女!微博之夜,杨幂身穿红裙惊艳亮相。红唇配上卷发大波浪,宛如女王一般。抹胸裙露出的皮肤光滑洁白,吹弹可破,纤细的大臂看起来和普通人的小臂一样粗细。紧身的连衣裙凸显了杨幂……赌神为何再难超越?要仔细看懂其中的故事才知道有位著名的影评人罗杰伊伯特曾经说过,你不要指望电影中的故事可以帮助你建立事业,建立正确的人生观和价值观。因为这不是电影的作用。电影也不需要完全以事实为依据,因为它所……
中水北方公司1项科技项目获2022年度水利部重大科技项目立项近日,水利部办公厅公布了2022年度水利部重大科技项目清单,公司水利工程勘测全过程数字孪生解决方案及应用示范项目获得智慧水利领域立项。水利工程勘测全过程数字孪生解决方案及……我国代表性婴幼儿膳食调查数据首次发布本报记者韩松妍周岩婴幼儿期营养是全生命周期健康的基础,膳食营养摄入不足或过多是营养不良的主要原因。近日,中国疾病预防控制中心营养与健康所首次报告了十三五科技部基础资源调查……chatgpt引发的中美科技差距的讨论最近爆火的chatgpt引发了新一轮的人工智能热潮,美国科技企业和中国科技企业都纷纷布局相关技术。其中不少网友对中国科技企业的创新和技术实力发生质疑,纷纷提出问题,为什么cha……春季养肝黄金期,送你五种养肝中成药,让你肝好百病消寒冷的冬天已经过去,春天已经来到,我们刚好可以趁着这个时节,把我们的肝脏好好的养一养,那为什么偏偏要在春季养肝呢?中医上认为肝主春,春天在五行中属木,而肝也属木性,所以春……晨起后喝一杯温水,等于喝细菌?多数人不明白,医生告诉你答案水是人体中不可或缺的重要物质,总含量占6573,水参与各器官各组织的运行,多喝水,除了为身体补水之外,还能提高机体含氧量,促进血液的流动,帮助身体排毒。如今随着养生保健意……8道家常炒菜,适合一家人吃,鲜香美味超下饭,做法简单易上手大家好这里是香姐说美食,每天分享好吃的家常菜。一家人,每天的一日三餐,对下厨的人来说,就是一件令人头疼的事情,得照顾一家人的口味,要做得有营养又好看,有时候还得考虑经济实惠。今……如何看待以太坊2。0?关于以太坊的话题呢,其实我之前文章里面其实都有反复的提到过和涉猎到那么以太坊他作为最早的一批区块链供电项目他除了开创出了这个所谓的超级计算机的这样的一个……流动幼儿父母群体因自身的育儿知识不足,而感到养育压力加大流动幼儿家长的育儿压力还是不容乐观,平均得分很接近临界高压力水平,且有近一半的家长压力水平超出正常水平。与同类型的研究相比,流动幼儿父母育儿压力总体得分高于一般学龄前儿童母亲育……溃疡在舌尖心火,在牙龈胃火,在嘴唇脾热,4个中成药,正确清火溃疡在舌尖,多是心火,在牙龈,多是胃火,在嘴唇,多是脾热。大家好,我是刘医生。有的人经常长又疼又肿的口腔溃疡,但是你知道吗?口腔溃疡的位置,跟我们的脏腑也有关系。……费利佩梅洛2013年欧冠要是有VAR,我们能淘汰皇马甚至夺冠直播吧2月10日讯费利佩梅洛日前接受了Diretta。it采访,他表示如果201213赛季的欧冠联赛有VAR,那么当时加拉塔萨雷本可以淘汰皇马。201213赛季欧冠联赛,……26小时,土耳其强震下一场生命与时间的赛跑头条创作挑战赛土耳其强震发生后,余震仍有发生,危机还未解除。图片源自网络图片源自网络据官媒公布消息,土耳其大地震目前已经造成了数千人死亡,另在残垣断壁之……2023武汉马拉松公众报名2月10日12点开始报名参赛说明公众报名通道开放时间:2023年2月10日12:002月13日12:00报名费马拉松:150元人民币半程马拉松:100元人民币13公里……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网