上面讲过的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模块的更多相关文章

  1. python学习笔记-(九)模块

    基础知识 1. 定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑----实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块就是test) 包:用 ...

  2. python学习笔记之九:模块和包

    Python的标准安装包括一组模块,称为标准库.这里介绍模块的工作方式,学习如何使用它们. 一. 模块 1.1 用import从外部模块获取函数并为自己的程序所用: >>> from ...

  3. python学习笔记(locust性能测试模块)

    locust是基于python的性能测试工具.支持python2.7及其以上的版本.相对于主流的LR与Jmeter工具使用的方式不一样.locust是通过编写python代码来完成性能测试的. 通过L ...

  4. python学习笔记(六)— 模块

    一.os.sys模块 import os print(os.getcwd())#取当前工作目录,绝对路径 print(os.chdir("../"))#更改当前目录 print(o ...

  5. python学习笔记之使用threading模块实现多线程(转)

    综述 Python这门解释性语言也有专门的线程模型,Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,但暂时无法利用多处理器的优势 ...

  6. python学习笔记(excel+requests)

    已经可以对excel简单的操作后 可以开始通过excel写测试用例 读取用例 执行用例 提前写好execl 如图: 下面是代码: #!/usr/bin/env python # -*- coding: ...

  7. Python学习笔记(迭代、模块扩展、GUI 、编码处理等)

    PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...

  8. Python学习笔记005_文件_OS_模块_pickle

    >>> >>> # 文件 open()方法是打开文件,它有很多参数,第一个文件名是必须的(带路径)>>> >>> f = ope ...

  9. Python学习笔记:import sys模块(argv、path、platform、exit)

    sys模块是Python标准库中自带的一个模块. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与当前程序之外的系统环境交互,如:Pyth ...

随机推荐

  1. python 打印日历

    import calendar as c'''x = c.monthcalendar(2017,11) 使用这个结果打印出日历 s = 1while s <= 7: print('周%d '%( ...

  2. Visual Studio Code 键盘参考表

    2019年4月6日,对照中英翻译. 一般 Ctrl+Shift+P, F1 显示命令调色板 Ctrl+P 快速打开,转到文件… Ctrl+Shift+N  新建窗口/实例 Ctrl+Shift+W   ...

  3. 组件化框架设计之apt编译时期自动生成代码&动态类加载(二)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从以下两个内容来介绍组件化框架设计: apt编译时 ...

  4. inno setup静默安装

    [Code] //关键代码静默安装 procedure InitializeWizard(); begin   //不显示边框,这样就能达到不会闪两下了   WizardForm.BorderStyl ...

  5. Compile Linux Kernel on Ubuntu 12.04 LTS (Detailed)

    This tutorial will outline the process to compile your own kernel for Ubuntu. It will demonstrate bo ...

  6. 高精度求A*B(FFT)

    A * B Problem Plus 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402 Time Limit: 2000/1000 MS (Java/ ...

  7. Centos7 安装rar,unrar,zip,unzip

    1.yum 安装unrar # yum install unrar rar命令 # rar a test.rar test.jpg test.png 这条命令是将test.jpg和test.png压缩 ...

  8. scroll兼容性

    document.html=>document.documentElement function scroll() { if(window.pageYOffset != null) // ie9 ...

  9. 进程启动到别的session下(作用)

    https://blog.csdn.net/lostwifi/article/details/76472868 WTSGetActiveConsoleSessionId WTSEnumerateSes ...

  10. Goldengate 部署oracle10g在 rac asm环境,完整教程

    前言 Goldengate再rac 环境部署,和单机部署区别还是有点大,主要存在环境上. 环境 oracle10g ,sid=rac 准备工作 1.在rac节点,配置监听动态注册,确保goldenga ...