更好的Python网络请求框架requests详解

发起网络请求是日常开发中不可或缺的操作,在Python中,可以是使用Python内置的urllib模块来完成,而Python内置的urllib模块请求网络相对麻烦且功能不够强大。而requests框架可以非常方便的处理各种网络请求。

给flask开发的同学普及一组概念:Flask 中request模块和requests框架是完全不同的。
  • Flask 中request模块:用于处理来自客户端的请求,可以获取客户端请求的 form 、args、headers 、cookies 等信息。

  • requests框架:用于发起网络请求到服务器端,如get、post请求,可携带参数、设置headers、cookies等信息。

安装 requsets
pip install requests
发起 get 请求
#不包含任何参数的请求
r = requests.get(url_get)

#不包含任何参数的请求,设置超时10s,timeout不设置则默认60s
r = requests.get(url_get,timeout=10)

#携带参数的请求,dict_param为参数字典
r = requests.get(url_get, data=dict_param)

#携带参数的请求,dict_param为参数字典,设置超时10s
r = requests.get(url_get, data=dict_param,timeout=10)

#携带参数的请求,dict_param为参数字典,设置超时10s,并携带headers属性
r = requests.get(url_get, data=dict_param,timeout=10,headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'})


发起 post 请求
#不包含任何参数的请求
r = requests.post(url_post)

#不包含任何参数的请求,设置超时10s,timeout不设置则默认60s
r = requests.post(url_post,timeout=10)

#携带参数的请求,dict_param为参数字典,默认data=dict_param,使用data=则表示post的是form请求,即 application/x-www-form-urlencoded 。
r = requests.post(url_post, data=dict_param)

#携带参数的请求,dict_param为参数字典,json=dict_param,使用json=则表示post的是json请求 。
r = requests.post(url_post, json=dict_param)

#携带参数的请求,dict_param为参数字典,data=json.dumps(dict_param),则表示post的是json请求 。
r = requests.post(url_post, data=json.dumps(dict_param))

#携带参数的请求,dict_param为参数字典,设置超时10s
r = requests.post(url_post, data=dict_param,timeout=10)

#携带参数的请求,dict_param为参数字典,设置超时10s,并携带headers属性
r = requests.post(url_post, data=dict_param,timeout=10,headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'})

#post请求上传文件
url = 'http://apihost/upload/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

发起其他类型请求
r = requests.put('http://httpbin.org/put', data =dict_param)
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
响应请求结果

所有的http请求返回的结果均为Response对象,从Response对象中可以获取你想要的任何内容。

  • 获取请求响应数据的方式
#获取接口返回的字符串数据
resultStr = r.text

#获取接口返回的json数据,即直接将json格式的数据转换为json对象
r.json()

#获取接口返回的二进制数据,假设二进制数据如果为图片可以继续转换成图片
r.content

#获取原始套接字,使用r.raw请在 requests 请求中加上参数 stream=True
r.raw
  • 获取请求响应的其他信息
#获取状态码
r.status_code

#获取请求的url
r.url

#获取指定cookies信息
r.cookies['token']

#获取访问服务器返回给我们的响应头部信息
r.headers

#获取指定访问服务器返回给我们的响应头部信息
r.headers['Content-Type']

#获取发送到服务器的请求的头部的信息
r.request.headers

使用代理访问

做爬虫的使用经常会使用代理访问,不管是post请求还是get请求,只需要添加proxies即可。


proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}
requests.get(url_get, proxies=proxies)
小结

在python开发中,无论做web开发还是网络爬虫还是其他,网络请求是一定会用到的,requests可能是你最好的选择,你必须掌握他的所有用法。实践出真知,现在动手实战一下吧。

提醒:

不要一味的做一个收藏家,你将源代码收藏、将知识点收藏,唯一的作用就是满足你的内心,并不能提升你自己,那些你收藏过的认为有价值的东西,其实是你把它当作是垃圾丢进了叫收藏夹的垃圾桶。

如果对你有帮助,或者你有什么见解,请关注公众号我们互相交流。我会不定期分享优秀源码、分享开发技术、为你解答各种开发难题。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值