2.5 Python库
本节主题:2.5 Python库
课程讲师:Yunlin
观看地址:点我进入
1 本节要点
- 了解pip的概念、用法
- 掌握Python中模块(Module)的概念,以及如何引入模块/标准库/第三方库
- 重点掌握Python中JSON库与Requests库
2 课前准备
2.1 安装Requests库
在命令行下通过pip安装:
pip install requests
出现Successfully insatlled requests-xxxx即表示安装成功!
3 课程内容
3.1 pip 与 Python库
3.1.1 pip是什么
pip是一个以Python计算机程序语言写成的软件包管理系统,提供了对 Python 包的查找、下载、安装、卸载的功能。
3.1.2 模块的概念
前面我们提到了在Python中定义变量和函数,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
定义模块:
#!/usr/bin/python3
# Filename: support.py
def print_func( par ):
print ("Hello : ", par)
return
调用模块:
#!/usr/bin/python3
# Filename: test.py
# 导入模块
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
3.1.3 包的概念
包是一种管理 Python 模块命名空间的形式,采用"点模块名称"; 比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
3.1.4 Python丰富的库
除了内建的模块外,Python还有大量的第三方模块。
基本上,所有的第三方模块都会在PyPI - the Python Package Index上注册,只要找到对应的模块名字,即可用pip安装。
库名 | 介绍 |
Math | Math模块提供了许多对浮点数的数学运算函数; |
NumPy | NumPy引入了支持大型多维数组和矩阵的函数,同时还引入了高级数学函数来处理这些数组和矩阵; |
Matplotlib | Matplotlib是Python中最流行的数据可视化库。允许生成和构建各种各样的图; |
Pandas | Pandas主要用于数据操作和数据分析; |
Scrapy | Scrapy是另一个可有效用于网页抓取的Python库。它是一个开源的协作框架,用于从网站中提取所需数据。使用起来快捷简单。 |
3.1.5 如何导入库
使用import就可以导入一个库,然后使用库中的函数。
import math
import numpy as np
from numpy import *
3.2 Json库
JavaScript对象表示法是一种流行的方式将数据格式化,成为人可读的字符串。JSON是JavaScript变成编写数据结构的原生方式,不需要了解JavaScript,也能处理JSON格式的数据
下面是JOSN格式数据的一个例子:
{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null}
3.2.1 导入json库
导入json模块后,就可以调用相关函数,JSON字符串总是用双引号
import json
Python 原始类型向 JSON 类型的转化对照表:
Python | JSON |
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
3.2.2 JSON格式转换
- json.loads
要将包含JSON数据的字符串转换为Python的值,就将它传递给json.loads()函数
import json
a='{"name":"Zophie","isCat":true,"miceCaught":0,"napsTaken":37.5,"felineIQ":null}'
b=json.loads(a)
print(b)
- json.dumps()
将一个Python值转换成JSON格式的数据字符串,该值只能是以下基本Python数据类型之一:字典、列表、整型、浮点型、字符串、布尔型或None
import json
a={'name': 'Zophie', 'isCat': True, 'miceCaught': 0, 'napsTaken': 37.5, 'felineIQ': None}
b=json.dumps(a)
print(b)
3.2.3 JSON与字典的差别
从形式上看,都是“Key:Value”的形式。但是从本质上讲,字典是一种数据结构,而json是一种格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。
3.3 requests库
Requests文档地址:点我查看
3.3.1 导入Requests库
import requests
3.3.2 Requests的具体构成
requests.request(method, url, ``*``*``kwargs)
3.3.3 使用Requests
要通过GET访问一个页面,只需要几行代码:
>>> import requests
>>> r = requests.get('https://www.baidu.com/') # 百度
>>> r.status_code
200
>>> r.text
r.text
3.3.4 注意请求格式
接口最常见的请求格式有 json/application 及 x-www-form-urlencoded,我们已经在第一节课讲了其区别,在实际调用接口过程中,我们要根据接口的请求格式,对参数进行处理!
- 接口请求格式为 application/json
import requests
import urllib.parse
import json
url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"
payload = {"image":"http://www.xxxx.com/xxxx.png"}
headers = {
'Authorization': 'APPCODE xxxxxxxxxxxxxxx',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = json.dumps(payload))
json.loads(response.text)
- 接口请求格式为 x-www-form-urlencoded
urlencode 即url编码,把数据转换为类似url传参的格式
urlencode前
{"image":"http://www.xxxx.com/xxxx.png"}
urlencode后
'image=http%3A%2F%2Fwww.xxxx.com%2Fxxxx.png'
import requests
import urllib.parse
import json
url = "https://nvoiceocr.market.alicloudapi.com/taxinvoice"
payload = {"image":"http://www.xxxx.com/xxxx.png"}
headers = {
'Authorization': 'APPCODE xxxxxxxxxxxxxxx',
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data = urllib.parse.urlencode(payload))
json.loads(response.text)