一、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学习笔记(十一):网络编程的更多相关文章

  1. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  2. python学习笔记10 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  3. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  4. nodejs学习笔记之网络编程

    了解一下OSI七层模型   OSI层 功能 TCP/IP协议 应用层 文件传输,电子邮件,文件服务,虚拟终端  TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化 ...

  5. python学习之路网络编程篇(第二篇)

    新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...

  6. Python学习之==>Socket网络编程

    一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...

  7. APUE 学习笔记(十一) 网络IPC:套接字

    1. 网络IPC 套接字接口既可以用于计算机之间进程通信,也可以用于计算机内部进程通信   套接字描述符在Unix系统中是用文件描述符实现的   /* 创建一个套接字 */ #include < ...

  8. Python学习笔记6 函数式编程_20170619

    廖雪峰python3学习笔记: # 高阶函数 将函数作为参数传入,这样的函数就是高阶函数(有点像C++的函数指针) def add(x, y): return x+y def mins(x, y): ...

  9. python 3.x 学习笔记13 (网络编程socket)

    1.协议http.smtp.dns.ftp.ssh.snmp.icmp.dhcp....等具体自查 2.OSI七层应用.表示.会话.传输.网络.数据链路.物理 3.socket: 对所有上层协议的封装 ...

  10. python学习笔记:网络请求——urllib模块

    python操作网络,也就是打开一个网站,或者请求一个http接口,可以使用urllib模块.urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模 ...

随机推荐

  1. 3PC

    3PC,是Three-Phase Commit的缩写,即三阶段提交,是2PC的改进版,其二阶段提交协议的"提交事务请求"过程一分为二,形成了由CanCommit,PreCommit ...

  2. keras系列︱利用fit_generator最小化显存占用比率/数据Batch化

    本文主要参考两篇文献: 1.<深度学习theano/tensorflow多显卡多人使用问题集> 2.基于双向LSTM和迁移学习的seq2seq核心实体识别 运行机器学习算法时,很多人一开始 ...

  3. ROS机器人操作系统官方教程、源码汇总

    1 wiki: http://wiki.ros.org/  2 code: https://github.com/ ---- 1 基础教程 https://github.com/ros/ros_tut ...

  4. 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题

    本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/74161115 引言 最近在测试EasyNVR ...

  5. Deep Reinforcement Learning 基础知识(DQN方面)

    Introduction 深度增强学习Deep Reinforcement Learning是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算 ...

  6. yxy-插入formid-并发/压力(入参的变量化)

    1.抓取接口如下 2.该接口为插入数据库操作,由于前段操作频繁,就简单压测一下 接口中formId.accountId.openId为变量 formId为随机生成插入:accountId.openId ...

  7. 自己整合的SSM框架 maven坐标大全

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. linux 一些有用的命令

    新增软链接 ln -s /usr/local/python27/bin/python2.7 /usr/bin/python 新建目录/递归 mkdir ./{nginx,memcached,httpd ...

  9. Windows2012启动自动帐户登陆

    Win+R 启动 输入regedit  运行注册表 找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogo ...

  10. LOJ2421 NOIP2015 信息传递 【tarjan求最小环】

    LOJ2421 NOIP2015 信息传递 LINK 题目大意就是给你一个有向图,求最小环 有一个很奇妙的性质叫做每个点只有一条出边 然后我们考虑对每个强联通分量进行考虑 发现每个强联通分量内的边数一 ...