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 ...
随机推荐
- Java程序员必精通之—synchronized
更多Java并发文章:https://www.cnblogs.com/hello-shf/category/1619780.html 一.简介 相信每一个java程序员对synchronized都不会 ...
- Base64加密工具
正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类--Base64类 在该类之中存在两个内部类:Base6 ...
- 推荐系统之隐语义模型LFM
LFM(latent factor model)隐语义模型,这也是在推荐系统中应用相当普遍的一种模型.那这种模型跟ItemCF或UserCF的不同在于: 对于UserCF,我们可以先计算和目标用户兴趣 ...
- Linux 环境下安装rlwrap工具
rlwrap项目是一个“readline包装器”,它使用GNU readline库来编辑任何其他命令的键 盘输入.通过rlwrap可以进行命令的上下切换,类似历史命令. 1.下载rlwrap rpm ...
- sciencedirect 网站抓取过程
开发环境 C#+SQLite 软件使用教程: 设置页面 1. 首先录入需要查询的关键词,如果需要根据年去查询,可以勾选对应的年,支持多个年份查询.点击[设置关键字]按钮,把待查询关键 ...
- SQLRecoverableException: I/O Exception: Connection reset
https://stackoverflow.com/questions/6110395/sqlrecoverableexception-i-o-exception-connection-reset T ...
- oracle10G锁查询、批量杀锁及常用sql
前言 记录1.oracle10G锁查杀技巧 2.资源检查方面的sql 锁查杀 找出所有被锁的对象.注意:不一定是死锁,大部分应该是阻塞,如果发现大量的锁对象,一定要检查程序逻辑了,优化sql sele ...
- linux-ftp install
ftp安装 yum install vsftpd vi /etc/vsftpd/vsftpd.conf (可以先备份,但不要放在此目录下,不然启动vsftpd的时候 也会加载其备份文件,报启动错误,因 ...
- MongoDB服务的安装与删除
服务的安装: 在MongoDB的目录下创建两个文件夹 data和logs, 在通过cmd进入bin目录下,执行命令: mongod --dbpath "C:\Program Files\Mo ...
- oracle中sys,system,scott,hr用户
https://blog.csdn.net/xingfeng0501/article/details/6699390 scott 是个演示用户,是让你学习ORACLE用的 hr用户是个示例用户,是在创 ...