python学习笔记(十一):网络编程
一、python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块。
urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块。
import json
from urllib import request
from urllib import parse
pay_url = 'http://szz.nnzhp.cn/pay'
balance_url = 'http://szz.nnzhp.cn/get_balance'
balance_data = {'user_id':1}
new_balance_data = parse.urlencode(balance_data)#把请求参数变成xx=11这样的
balance_req = request.urlopen(balance_url+'?'+new_balance_data)#发送get请求
print(balance_req.read().decode())
#获取接口返回的结果,返回的结果是bytes类型的,需要使用decode方法解码,变成一个字符串
pay_data ={"user_id":1,"price":""}
new_pay_data = parse.urlencode(pay_data)#把请求参数变成xx=11这样的
pay_req = request.urlopen(pay_url,new_pay_data.encode())#发送post请求,传入参数的话
#参数必须是bytes类型,所以需要先encode一下,变成bytes类型
print(pay_req.read().decode())#获取接口返回的结果,返回的结果是bytes类型的
#需要使用decode方法解码,变成一个字符串
res = json.loads(pay_req.read().decode())
#因为返回的是一个json传,想把json串转成字典的话,久使用json模块转成一个字典
print(res)
二、上面是使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出来使用的话,还得用json,发get请求和post请求,也不通,使用比较麻烦,还有一个比较方便的模块,比urllib模块方便很多,就是requests模块,它使用比较方便,需要安装,pip install requests即可,下面是requests模块的实例
import requests
pay_url = 'http://szz.nnzhp.cn/pay'
balance_url = 'http://szz.nnzhp.cn/get_balance'
balance_data = {'user_id':1}
pay_data ={"user_id":1,"price":""}
balance_res = requests.get(balance_url,balance_data).text
#发送get请求,并获取返回结果,text获取的结果是一个字符串
print(balance_res)
balance_res = requests.get(balance_url,balance_data).json()
#发送get请求,并获取返回结果,json()方法获取的结果直接是一个字典
print(balance_res)
pay_res = requests.post(pay_url,pay_data).json()#调用post方法
print(pay_res)
#====入参是json串的====
url = 'http://api.nnzhp.cn/getmoney'
data = {"userid":1}
res = requests.post(url,json=data).json()#指定入参json
print(res)
#======添加cookie=====
url = 'http://api.nnzhp.cn/setmoney2'
data = {'userid':1,"money":9999}
cookie = {'token':"token12345"}
res = requests.post(url,data,cookies=cookie).json()#使用cookies参数指定cookie
print(res)
#=====添加权限验证=====
url = 'http://api.nnzhp.cn/setmoney'
data = {'userid':1,"money":91999}
res = requests.post(url,data,auth=('admin','')).json()
#使用auth参数指定权限验证的账号密码,auth传的是一个元组
print(res)
#======发送文件=====
url = 'http://api.nnzhp.cn/uploadfile'
res = requests.post(url,files={'file':open('api11.py')}).json()
#指定files参数,传文件,是一个文件对象
print(res)
#=====发送header======
url = 'http://api.nnzhp.cn/getuser2'
data = {'userid':1}
header = {'Content-Type':"application/json"}
res = requests.post(url,headers=header).json()
#指定headers参数,添加headers
print(res)
python学习笔记(十一):网络编程的更多相关文章
- python学习笔记11 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- python学习笔记10 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- nodejs学习笔记之网络编程
了解一下OSI七层模型 OSI层 功能 TCP/IP协议 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化 ...
- python学习之路网络编程篇(第二篇)
新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...
- Python学习之==>Socket网络编程
一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...
- APUE 学习笔记(十一) 网络IPC:套接字
1. 网络IPC 套接字接口既可以用于计算机之间进程通信,也可以用于计算机内部进程通信 套接字描述符在Unix系统中是用文件描述符实现的 /* 创建一个套接字 */ #include < ...
- Python学习笔记6 函数式编程_20170619
廖雪峰python3学习笔记: # 高阶函数 将函数作为参数传入,这样的函数就是高阶函数(有点像C++的函数指针) def add(x, y): return x+y def mins(x, y): ...
- python 3.x 学习笔记13 (网络编程socket)
1.协议http.smtp.dns.ftp.ssh.snmp.icmp.dhcp....等具体自查 2.OSI七层应用.表示.会话.传输.网络.数据链路.物理 3.socket: 对所有上层协议的封装 ...
- python学习笔记:网络请求——urllib模块
python操作网络,也就是打开一个网站,或者请求一个http接口,可以使用urllib模块.urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模 ...
随机推荐
- Redis的集群安装以及rehash重新迁移教程指南
1. Redis的cluster集群 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生存的看家本领,增加集群 ...
- 文本数据预处理:sklearn 中 CountVectorizer、TfidfTransformer 和 TfidfVectorizer
文本数据预处理的第一步通常是进行分词,分词后会进行向量化的操作.在介绍向量化之前,我们先来了解下词袋模型. 1.词袋模型(Bag of words,简称 BoW ) 词袋模型假设我们不考虑文本中词与词 ...
- vps上搭建jupyter notebook远程服务
安装anaconda 使用如下命令下载: wget https://repo.continuum.io/archive/Anaconda3-5.0.0.1-Linux-x86_64.sh 如果非roo ...
- webdriver常用函数总结
#1 创建浏览器对象 driver = webdriver.Chrome() #2 设置隐式等待10秒 driver.implicitly_wait(10) #3 最大化浏览器窗口 driver.ma ...
- 生成代码,从 T1 到 T16 —— 自动生成多个类型的泛型
当你想写一个泛型 的类型的时候,是否想过两个泛型参数.三个泛型参数.四个泛型参数或更多泛型参数的版本如何编写呢?是一个个编写?类小还好,类大了就杯具! 事实上,在 Visual Studio 中生成代 ...
- Quartz 2D编程指南(5) - 变换(Transforms)
Quartz 2D 绘制模型定义了两种独立的坐标空间:用户空间(用于表现文档页)和设备空间(用于表现设备的本地分辨率).用户坐标空间用浮点数表示坐标,与设备空间的像素分辨率没有关系.当我们需要一个点或 ...
- Quartz 2D编程指南(2) - 图形上下文
一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...
- elixir 几种安装方式
1. yum yum 源(直接放弃,版本太老) 2. 使用预编译包 wget https://github.com/elixir-lang/elixir/releases/download/v1. ...
- istio 安装试用
1. 命令行工具 curl -L https://git.io/getIstio | sh - 2. 环境变量配置 export PATH=$PWD/bin:$PATH 3. RBAC 检验 kube ...
- 一个简单的selenium实例(一)
1.selenium RC+Eclipse下载安装 java环境 官网下载地址http://www.oracle.com/technetwork/java/javase/downloads/index ...