14_Python基础_Python网络编程

16 篇文章 0 订阅
Python网络编程
    一、基本的网络知识介绍
        1、TCP/IP
            在网络通信过程中会用到一些相关的协议,其中TCP/IP是非常重要的协议,它是由TCP和IP两个协议组成。
            IP:Internet Protocol,它是一种低级的路由协议,它把数据拆分在很多小的数据包中,并通过网络把它们发送到某一特定地址,但是无法保证所有的包都能抵达到目的地,也不能保证包按顺序抵达。IP转输数据存在不安全性,还需要TCP转输控制协议进行网络通信
            TCP是一种高层次的协议,是面向连接的可靠数据传输协议,如果有些数据包没有收到则会重发,对数据包的内容准确性做检查并保证数据包按顺序抵达。所以TCP可以保证数据包安全地按照序顺送达目的地。
        2、IP地址
            为了实现网络中不同计算机之间的通信,每台计算机都必须要有一个与众不同的标识,这个标识就是IP地址,TCP/IP则是使用IP地址来标识源地址和目的地址。
            最初IP地址是由32位数字构成,由4个8位二进制数组成,每8位之间使用圆点隔开,如:192.168.0.1,这种地址通过IPv4指定。现在的一种新地址模式,叫IPv6,它使用的是128位数字表示一个地址。当前还是很多设备都是使用的IPv4。
            特殊的IP地址:127.0.0.1,它叫做回送地址,指本机,回送地址主要用于网络软件测试及本机进程间的通信,只发送数据,只进行本机进程间通信,不会进行任何网络传输。
        3、端口
            一个IP地址标识一台计算机,一台计算机又有很多网络通信程序在运行,为了区分不同的进程则需要使用端口进行区分,所以在进行网络通信的时候是要找到对应的进程的所以不仅仅要有IP地址还要指定端口。
            TCP/IP系统中端口号是一个16位的数字,它的范围是0~65535。把小于1024的端口预留给预定义的服务,如:HTTP-->80,FTP-->21,Telnet-->23,Email-->25 ……    除非要与那些服务进行通信,否则一般情况下是不应该使用小于1024的端口的。
        4、HTTP/HTTPS
            HTTP/HTTPS是TCP/IP的一种协议。
            HTTP
                超文本传输协议,属于应用层协议,适用于分布式超文本信传输。HTTP是无连接协议,在每次请求时都建立连接,服务器在处理完客户端的请求后,会先应答客户端,然后断开连接,不会一直占用网络资源。
                HTTP/1.1定义了8种请求方法:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE和CONNECT,其中最为常用的是GET与POST
                    GET方法:用于向指定的资源发送请求,被发送的信息“显示”地跟在URL后面,它一般只用于读取数据。因为明文信息传送存在不安全性
                    POST方法:用于向指定的资源提交数据,请求服务器进行处理,如:提交表单或上传文件。数据被包含在请求体当中,请求的数据不会在url中明文显示,相对安全
            
                HTTPS,是超文本转输协议和SSL的组合,用于提供加密通信及对网络服务器身份的鉴定。HTTPS使用端口443,而HTTP使用80端口与TCP/IP通信
            
        二、Python中urllib.request模块
            如果要在Python中访问互联网资源,可以使用官方内置的urllib.request模块
            发送GET请求
                如果要发送HTTP/HTTPS的GET请求,可以使用urllib_request模块的Request对象
                
                发送POST请求
                    发送POST请求与发送GET请求的流程一致
                
                这里要注意,请求时请求参数是json格式的
    三、JSON数据
        JSON的文档结构
            构成JSON文档的两种结构为:JSON对象(object)和JSON数组(array)。
            
        json数据的解码
            json数据解码(decode)指的是把json数据转换为Python数据,当从网络中接收或从磁盘中读取JSON数据时,需要把它解码为Python数据。
        我们使用json模块中的loads(str)函数进行json数据的解码,参数str是json字符串,返回的是Python数据
对前面的POST请求做如下改造,把返回的json数据转为python数据
# coding=utf-8
import urllib.request
import json
url='http://localhost:8080/insertUser'
# 准备请求参数
post_data={
        'userName':"小强",
         'sexCode':1,
         'note':"打不死的小强"
}
# 请求头指定请求为:'application/json'
header = {
    'Content-Type': 'application/json'
}
req = urllib.request.Request(url,data=json.dumps(post_data).encode('utf-8'),headers=header) # 发送post请求
with urllib.request.urlopen(req) as response:
    data = response.read()
    json_data = data.decode()    # 这里获得了json数据
    print("json字符串:",json_data)
    py_data = json.loads(json_data)    # 把json数据转为python数据
    # 处理Python数据
    print('id = ',py_data['id'])
    print('userName = ',py_data['userName'])
    print('sex = ',py_data['sex'])
    print('note = ',py_data['note'])
            
    注意,json数据与Python的转换对应关系
    
JSON
Python
对象
字典
数组
列表
字符串
字符串
整数数字
整数
实数数字
浮点
true
True
false
False
null
None
模拟对json数据的解析:
# coding=utf-8
import json
results = {
    'total':3,
    'result':[
        {'userName':'张三','age':20,'city':'长沙'},
        {'userName':'李四','age':19,'city':'广州'},
        {'userName':'王五','age':18,'city':'上海'}
]
}
json_results = json.dumps(results)    # 把results转为json类型,模拟请求返回的json
# 首先要把json转为python类型
python_data = json.loads(json_results)    # 把json类型转为python类型
# 对python_data进行解析
# 得到所有的result
total = python_data['total']
print('总共得到的记录数:{}'.format(total))
# 解析result节点
result_array = python_data['result']
i = 1
for result in result_array:
    print("-----第{}条记录----".format(i))
    print('userName=',result['userName'])
    print('age=',result['age'])
    print('city',result['city'])
    i += 1
       
 实例:下载百度logo图片
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值