python学习笔记:网络请求——requests模块
上面讲过的urllib模块太麻烦了,还有一个比较方便的模块,就是requests模块,好用到你怀疑人生·^_^,一定要会哦
使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)
需要安装,pip install requests即可,下面是requests模块的实例。
import requests
response = requests.get('http://www.baidu.com')
print(response.status_code) # 打印状态码
print(response.url) # 打印请求url
print(response.headers) # 打印头信息
print(response.cookies) # 打印cookie信息
print(response.text) #以文本形式打印网页源码
print(response.content) #以字节流形式打印
import requests # -----------------发送get请求:获取学生信息接口----------------
# 编写url和参数
url='http://api.nnzhp.cn/api/user/stu_info'
data = {"stu_name":"xiaohei"}# 参数 # res = requests.get(url,data).text #text方法返回的是字符串格式的返回值
res = requests.get(url,data).json() #json方法返回的是字典格式的返回值
print(res)
print(type(res)) # -----------------发送post请求:登录接口----------------
url = 'http://api.nnzhp.cn/api/user/login'
data = {"username":"niuhanyang","passwd":"aA123456"}# 参数
res = requests.post(url,data).text
# res = requests.post(url,data).json()
print(res)
print(type(res)) # -----------------发送post请求:添加学生信息(入参是josn)----------------
url = 'http://api.nnzhp.cn/api/user/add_stu'
data = {"name":"xiaoyang","grade":"一班","phone":""}# 参数
res = requests.post(url,json=data).json()
print(res) # -----------------发送post请求:学生金币充值(有cookie和身份验证)----------------
# 需要先调用登录接口,拿到cookie
# {
# "error_code": 0,
# "login_info": {
# "login_time": "20200511204314",
# "sign": "107f0790d967706f3b29646ae7cfb3cf",
# "userId": 47749
# }
# } # cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign
cookie = {"niuhanyang":"107f0790d967706f3b29646ae7cfb3cf"}
url = 'http://api.nnzhp.cn/api/user/gold_add'
data = {"stu_id ":"","gold":""}# 参数
res = requests.post(url,data,cookies=cookie).text
print(res) # -----------------发送post请求:获取所有学生信息(有header)----------------
url = 'http://api.nnzhp.cn/api/user/all_stu'
header = {"Referer":"http://api.nnzhp.cn/"}
res = requests.get(url,headers=header).text
print(res)
# -----------------发送post请求:上传文件----------------
url = 'http://api.nnzhp.cn/api/file/file_upload'
res = requests.post(url,files={"file":open('user.xlsx','rb')}).json() #我的参数名是file,open的是要上传的路径
print(res)
小练习
import requests
import jsonpath # 写一个方法并调用方法,请求接口,获取返回值,解析取sign def getSign():
url = 'http://api.nnzhp.cn/api/user/login'
data = {"username":"niuhanyang","passwd":"aA123456"}
res = requests.post(url,data).json()
# print(res)
# {'error_code': 0,
# 'login_info': {'login_time': '20200512153621', 'sign': '15aa5e3feb36248ff25e9e85abc1a024', 'userId': 47749}} #三种获取方式
# sign = res.get("login_info").get("sign")#获取不到返回null
# sign = res["login_info"]["sign"]# 获取不到报错
sign = jsonpath.jsonpath(res,'$..sign')# 适合复杂的接口,返回结果是列表,获取不到返回false
print(sign) #调试,表示是当前文件运行
if __name__ == '__main__':
getSign()
python学习笔记:网络请求——requests模块的更多相关文章
- python学习笔记-(九)模块
基础知识 1. 定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑----实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块就是test) 包:用 ...
- python学习笔记之九:模块和包
Python的标准安装包括一组模块,称为标准库.这里介绍模块的工作方式,学习如何使用它们. 一. 模块 1.1 用import从外部模块获取函数并为自己的程序所用: >>> from ...
- python学习笔记(locust性能测试模块)
locust是基于python的性能测试工具.支持python2.7及其以上的版本.相对于主流的LR与Jmeter工具使用的方式不一样.locust是通过编写python代码来完成性能测试的. 通过L ...
- python学习笔记(六)— 模块
一.os.sys模块 import os print(os.getcwd())#取当前工作目录,绝对路径 print(os.chdir("../"))#更改当前目录 print(o ...
- python学习笔记之使用threading模块实现多线程(转)
综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...
- python学习笔记(excel+requests)
已经可以对excel简单的操作后 可以开始通过excel写测试用例 读取用例 执行用例 提前写好execl 如图: 下面是代码: #!/usr/bin/env python # -*- coding: ...
- Python学习笔记(迭代、模块扩展、GUI 、编码处理等)
PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...
- Python学习笔记005_文件_OS_模块_pickle
>>> >>> # 文件 open()方法是打开文件,它有很多参数,第一个文件名是必须的(带路径)>>> >>> f = ope ...
- Python学习笔记:import sys模块(argv、path、platform、exit)
sys模块是Python标准库中自带的一个模块. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与当前程序之外的系统环境交互,如:Pyth ...
随机推荐
- Codeforces 1114E(数学+随机算法)
题面 传送门 分析 通过二分答案,我们显然可以求出数组中最大的数,即等差数列的末项 接着随机取一些数组中的数,对他们两两做差,把得到的差取gcd即为公差 例a={1,5,9,13},我们随机取了1 9 ...
- 页面跳转到Area区域连接
@Html.ActionLink("主页", "Index", new { controller = "Test", Action = &q ...
- LeetCode Array Easy 219. Contains Duplicate II
---恢复内容开始--- Description Given an array of integers and an integer k, find out whether there are two ...
- Java高频经典面试题(第一季)四:方法的参数传递机制
考点? 方法的参数传递机制 String,包装类等对象的不可变性 方法的参数传递机制: ①形参是基本数据类型 传递数据值 ②实参是引用数据类型 传递地址值 特殊的类型:String.包装类等对象不可变 ...
- Python3.5-20190504-廖老师的2-if elif else continue break
条件判断: if 条件1: 代码块 elif 条件2: 代码块 else 条件3: 代码块 brith = input("请输入出身年月:") if brith > 200 ...
- Requests使用
Requests 简介 Requests库 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到.可以说,**Requests 完全满足如今网络的需求 ...
- java 调用wsdl的webservice接口 两种调用方式
关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...
- python plotly 使用教程
1.plotly介绍 lotly的Python图形库使互动的出版质量图表成为在线. 如何制作线图,散点图,面积图,条形图,误差线,箱形图,直方图,热图,子图,多轴,极坐标图和气泡图的示例. 推荐最好使 ...
- C++11之列表初始化
1. 在C++98中,标准允许使用花括号{}来对数组元素进行统一的集合(列表)初始化操作,如:int buf[] = {0};int arr[] = {1,2,3,4,5,6,7,8}; 可是对于自定 ...
- bzoj 2013
http://www.lydsy.com/JudgeOnline/problem.php?id=2013 最初看这个题的时候,以为神题不可做,然后去找yzjc..然后做法过于简单了(' ' ...