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 ...
随机推荐
- 安装Elasticsearch5.4.0以及head,kibana插件
可以在网盘中下载也可以去官网下载 网盘: Elasticsearch 地址:http://pan.baidu.com/s/1hrI0AFU elasticsearch-head 地址:http:// ...
- javascript标签放置位置
首先:放置位置哪里都能放 但是js代码很有可能不起作用:例如:往id为span的标签中定时插入数字 var time=document.getElementById("span") ...
- Html5 学习笔记 --》html基础 css 基础
HTML5 功能 HTML5特点 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta cha ...
- Vue.config.silent = true
Vue.config vue的全局配置文件 silent默认值是false Vue.config.silent = true 取消Vue所有的日志和警告
- 目录---Asp.NETCore轻松学系列【目录】
随笔分类 - Asp.NETCore轻松学系列 Asp.NETCore轻松学系列阅读指引目录 摘要: 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进 ...
- Python基础篇(格式化输出,运算符,编码):
Python基础篇(格式化输出,运算符,编码): 格式化输出: 格式:print ( " 内容%s" %(变量)) 字符类型: %s 替换字符串 %d 替换整体数字 ...
- Vue证明题
看来我需要对我的vue能力做一个证明了~~ 最近辞职了,又逢病重,找工作的时候发现对vue要求蛮高的,说会不行,还必须要有过vue的项目. 我这种半路出家的哪里来的vue的项目,公司又不是那种一线互联 ...
- 利用Swiperefreshlayout实现下拉刷新功能的技术探讨
在常见的APP中通常有着下拉页面从而达到刷新页面的功能,这种看似简单的功能有着花样繁多的实现方式.而利用Swiperefreshlayout实现下拉刷新功能则是其中比较简明扼要的一种. 一般来说,在竖 ...
- python socket的长连接和短连接
前言 socket中意为插座,属于进程间通信的一种方式.socket库隐藏了底层,让我们更好的专注于逻辑.如果短连接和长连接两概率没搞明白,会被坑的爬不起来. 短连接 一次完整的传输过程,发送方输出流 ...
- (PASS)JAVA数组去重 三种方法 (不用集合)
第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01; import java.sql.Array; import ...