Python网络请求模块requests
Python网络请求模块requests
背景介绍
之前说了,公司有一个需求需要使用python实现。由于公司服务器上的python版本是2.7我在写这个需求时,用到网络请求这部分时, 发现python 2.7版本的请求模块真的是设计很不合理,urllib和urllib2两个包,我弄的云里雾里的,索性我就不适用自带内建函数, 寻找第三方函数库了,发现requests这个函数库非常的便捷(http for humans).直接使用pip install requests命令即可安装。
requests quick start
发送请求
def function(): # 发送get请求获得一个response对象(我们可以从响应对象获得我们想要的一切数据) res = requests.get("https://api.github.com/events") # 发送post请求 res = requests.post("http://httpbin.org/post",data={"key":"value", ...}) # 发送put请求 res = requests.put("http://httpbin.org/put",data={"key":"value", ...}) # 发送delete请求 res = requests.delete("http://httpbin.org/delete") res = requests.head("http://httpbin.org/get") res = requests.options("http://httpbin.org/get") pass //你没看错就是那么简单,非常符合正常人的思维很简便 //再次强调我们能够从response对象中获得我们想要的一切数据信息
构造请求参数发送请求
get请求参数构造
def function(): # 请求参数 payload = {key1: value1, key2: value2} res = requests.get("http://httpbin.org/get",params=payload)# 注意是params参数 # requests 会自动帮我们拼接请求地址 # url= http://httpbin.org/get?key1=value1&key2=value2 //针对get请求使用的即使params参数,post请求使用的是data参数
post form表单请求参数构造
def function(): # form表单要提交的数据 payload = {key1: value1, key2: value2} res = requests.post("http://httpbin.org/post",data=payload)# 注意是data参数
post json对象请求提交参数
def function(): # post 提交json对象数据 payload = {key1: value1, key2: value2} res = requests.post("http://httpbin.org/post",data=json.dumps(payload))# 第一种方式 res = requests.post("http://httpbin.org/post",json=payload)# 第二种方式
构造请求头headers
def function(): # 构造请求头,请求头也是字典格式 headers = {user-agent: my-app/0.0.1} url = "https://api.github.com/some/endpoint" res = requests.get(url,headers=headers)
构造cookies请求
def function(): # 构造cookies cookies = dict(sessionId=Jsession3123131) url = "http://httpbin.org/cookies" requests.get(url,cookies=cookies) //比如有些应用可能需要携带某些cookie才能验证授权,那么此时就很有用了
构造请求超时设置
def function(): # 设置请求超时时间 requests.get(http://github.com, timeout=0.01) # 0.01秒没响应就请求超时失败
Response响应内容
content = res.content(原始二进制数据) # 大部分情况使用这个方法 text = res.text(文本数据信息,requests自动帮我们以指定编码解析出来的内容) # 响应json数据信息,通常我们使用json模块来处理 json_data = res.json() # 响应状态码 status_code=res.status_code # 响应头 headers = res.headers # 响应cookies cookies = res.cookies
总结
一句话requests函数库非常的简便 for humans,做网络爬虫时也可以使用该库函数。高级部分请参考,官方高级应用参考。
参考
1、 2、 3、
上一篇:
Java架构师技术进阶路线图
下一篇:
给设备加密以及配置DHCP