Python学习笔记(七)

用python代码调用接口,使用urllib模块,但是该模块数据必须都是2进制的,比较麻烦

from urllib.request import urlopen
from urllib.parse import urlencode
url = 'http://1。1.1.1/api/user/login'
res = urlopen(url) # 发送get请求
print(res.read().decode())
data = {'username':'niuhanyang','passwd':'aA123456'}
res = urlopen(url,urlencode(data).encode()) # 发送post请求
print(res.read().decode())

所以直接使用requests模块更方便使用

发送get请求

import requests
url = 'http://1。1.1.1/api/user/stu_info'
res = requests.get(url,params={'stu_name':'xiaohei'}) # 发送get请求
print(res.json()) # json直接把返回结果转成字典

发送post请求

url = 'http://1.1.1.1/api/user/login'
data = {'username':'niuhanyang','passwd':'aA123456'}
res = requests.post(url,data=data) # 发送post请求
print(res.json())

发送入参是json类型的post请求

url = 'http://1。1.1.1/api/user/add_stu'
data = {
    "name":"小黑",
    "grade":"天蝎座",
    "phone":12312341234,
    "sex":"",
    "age":28,
    "addr":"河南省济源市北海大道32号"
  }
res = requests.post(url,json=data) # 发送post请求,入参是json类型的
print(res.json())

发送有cookie的post请求

url = 'http://1.1.1.1/api/user/gold_add'
data = {
    'stu_id':11,
    'gold':200
  }
cookie = {'niuhanyang':'abd9a0995f4696e1a60133220b32037a'}
res = requests.post(url,data=data,cookies=cookie) # 发送post请求,添加cookie
print(res.json())

发送有header的post请求

url = 'http://1。1.1.1/api/user/all_stu'
header = {'Referer':'http://api.nnzhp.cn/'}
res = requests.get(url,headers=header) # 发送get请求,添加header
print(res.json())

上传文件

url = 'http://1。1.1.1/api/file/file_upload'
data = {'file':open('图片.jpg','rb')}
res = requests.post(url,files=data) # 上传文件
print(res.json())

下载文件

url = 'http://qiniuuwmp3.changba.com/1084511584.mp3'
res = requests.get(url)
print(res.content) # 返回的都是2进制的
with open('魔鬼中的天使.mp3','wb') as f:
    f.write(res.content)

url = 'https://aliimg.changba.com/cache/photo/855e5493-f018-44db-8892-c8660649327b_640_640.jpg'
res = requests.get(url,verify=False) # 如果是https的话,加verify=False,不验证证书
with open('图片.jpg','wb') as f:
    f.write(res.content)

常用方法

res.json() # 必须返回是json的才能用
res.text # 返回的都是字符串,下载文件的话用text不行
res.content # 用来下载文件,返回的是2进制的
res.cookies # 获取到返回的cookie
res.headers # 获取到返回的header
res.status.code # 获取状态码

异常处理

money = 1000
num = input('please enter a num:')
try:
    num = float(num)
    res = money/num
except Exception as e: # 出现异常,走except下面的代码
    print('出现异常了')
    print('你输入的价格不合法')
    print(e)
    raise Exception('主动,错误信息:%s' %e)
    # raise 主动抛出一个异常
else: # 没有异常走else下面的代码
    money -= num
    print('余额是:%s' %money)
finally: # 有没有异常,都会执行
    print('zzzzzz')

面向对象编程

类,可以认为是一个模板,比如人类,猫类,狗类,房子类等,实例化一个对象,就是按照房子类,创造一个房子

# 类,类名一般都以大写字母开头
# class House: # 经典类
class House(object): # 新式类
    def save(self):
        print('能住人')
a = House()
a.save()

人类都有相同的特点,1个嘴巴,2个眼睛,2个耳朵,这些就是类变量,各人之间的名字、年龄,性别都不同,这些就是成员变量。

某个人就剩1个眼睛了,也可以修改这个人的类变量,不会影响其他人的类变量

class Person: # 类,类名一般都以大写字母开头
    country = 'China' # 类变量
    eyes = 2
    ears = 2
    mouth = 1
    def __init__(self,name,age,sex): # 构造函数
        print('开始造人了')
        # 就是这个类在初始化的时候执行的
        self.name = name   # 属性,实例变量,成员变量
        self.age = age
        self.sex = sex
    def cry(self): # 类方法
        print('%scrying' %self.name)
taotao = Person('taotao',19,'') # 实例化
taotao.cry()
print(taotao.eyes)
taotao.eyes = 1
print(taotao.eyes)

 

posted on 2018-07-24 22:33  青冥之鹰  阅读(145)  评论(0编辑  收藏  举报

导航