Python学习 17day__高级语法
Xpath
在xml文件中查找信息的一套规则/语言,根据xml元素或者属性进行遍历
Xpath开发工具
开源的Xpath表达式编辑工具:XMLQuire
Chrome插件:Xpath Helper
Firefox插件:Xpath Checker
选取节点
nodename: 选区此节点的的所有子节点
/: 从节点开始读取
//: 选取节点,不考虑位置
.: 选取当前节点
..: 选取当前节点的父节点
@: 选取属性
网络编程
SOCKET编程
socket(套接字):s是一个网络通信的端点,能实现不同主机的进程通信
通过IP+端口定位对方并发送消息的通信机制
分为UDP编程和TCP编程
UDP编程
Server端流程
1 建立socket,socket是负责具体通信的一个实例
2 绑定,为创建的socket指派固定的端口和ip地址
3 接受对方发送内容
4 给对方发送反馈,此步骤为非必须步骤
Client端流程
1 建立通信的socket
2 发送内容到指定服务器
3 接受服务器给定的反馈内容
服务器端程序要求永久运行,一般用死循环处理
服务器端
1 # Socket模块负责socket编程 2 import socket 3 ''' 4 Server端流程 5 1 建立socket,socket是负责具体通信的一个实例 6 2 绑定,为创建的socket指派固定的端口和ip地址 7 3 接受对方发送内容 8 4 给对方发送反馈,此步骤为非必须步骤 9 ''' 10 def serverFunc(): 11 # 建立Socket 12 13 # SOCKET.AF_INET:使用ipv4协议族 14 # socket.SOCK_DGRAM: 使用UDP协议通讯 15 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 16 17 # 绑定ip和port 18 19 # 127.0.0.1代表本机 20 # 7852:指定端口号,可以改变 21 # 地址是一个tuple类型(ip, port) 22 addr = ('127.0.0.1', 7853) 23 sock.bind(addr) 24 25 # 接受对方消息 26 # recvfrom接受的返回值是一个tuple,前一项表示数据,后一项表示地址 27 # 参数的含义是缓冲区大小 28 29 data, addr = sock.recvfrom(500) 30 31 print(data) 32 print(type(data)) 33 34 # 发送过来的数据是bytes格式,必须通过解码才能得到str格式内容 35 # decode默认参数是utf-8 36 text = data.decode() 37 print(type(text)) 38 print(text) 39 40 # 给对方返回的消息 41 rsp = " 没呢" 42 43 # 发送的数据需要编码成bytes格式,默认为utf-8 44 data = rsp.encode() 45 sock.sendto(data, addr) 46 47 if __name__ == '__main__': 48 print("Starting server........") 49 serverFunc() 50 print("ENDING server..............")
客户端
1 import socket 2 3 ''' 4 Client端流程 5 1 建立通信的socket 6 2 发送内容到指定服务器 7 3 接受服务器给定的反馈内容 8 9 ''' 10 11 def clienfFunc(): 12 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 13 text = "吃没" 14 15 # 发送的数据必须是bytes格式 16 data = text.encode() 17 18 # 发送 19 sock.sendto(data, ("127.0.0.1", 7853)) 20 21 data, addr = sock.recvfrom(200) 22 23 data = data.decode() 24 print(data) 25 26 if __name__ == '__main__': 27 clienfFunc()
TCP编程
面向连接的传输,即每次传输之前需要先建立一个链接
客户端和服务器端两个程序需要编写
Server端的编写流程
1.建立socket负责具体通信,这个socket其实只负责接受对方的请求
2.绑定端口和地址
3.监听接入的范文socket
4.接受访问的socket,可以理解接受访问即建立了一个通讯的连接通路
5.接受对方的发送内容,利用接受到的socket接受内容
6.如果有必要,给对方发送反馈内容
7.关闭连接通路
Client端流程
1.建立通信socket
2.连接对方,请求跟对方建立通路
3.发送内容到对方服务器
4.接受对方的反馈
5.关闭连接通路
tcp 服务端
1 import socket 2 3 def tcp_srv(): 4 # 建立socket负责通信 5 6 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 # 绑定端口和地址 8 addr= ("127.0.0.1", 8998) 9 sock.bind(addr) 10 # 监听介入的访问socket 11 sock.listen() 12 13 while True: 14 # 接受访问的socket 15 skt, addr = sock.accept() 16 # 接受对方的发送内容,利用接收到的socket接收内容 17 msg = skt.recv(500) 18 # 接受到的是byets格式内容 19 msg = msg.decode() 20 21 rst = "Receiver msg :{0}from{1}".format(msg, addr) 22 print(rst) 23 # 如果有必要,给对方返回反馈信息 24 skt.send(rst.encode()) 25 # 关闭连接通路 26 skt.close() 27 28 if __name__ == '__main__': 29 print("Stating tcp server.......") 30 tcp_srv() 31 print("Ending tcp server........")
tcp 客户端
1 import socket 2 3 def tcp_clt(): 4 # 建立通信socket 5 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6 # 连接对方,请求跟对方建立通路 7 addr = ("127.0.0.1", 8998) 8 # 发送内容到对方服务器 9 msg = "I Love Python" 10 sock.send(msg.encode()) 11 # 接受对方的反馈 12 rst = sock.recv(500) 13 print(rst.decode()) 14 # 关闭连接通路 15 sock.close() 16 17 if __name__ == "__main__": 18 tcp_clt()
FTP编程
ftp :文件传输协议
通途:制定一些特殊的上传下载文件的服务
用户分类: 登陆ftp服务器必须有一个账号
Real账户:注册账户
Guest账户:可能临时对某一类人的行为进行授权
Anonymous账户:匿名帐户,允许任何人
FTP工作流程
客户端连接远程主机上的ftp服务器
客户端输入用户名和密码
客户端和服务器进行各种文件传输和信息查询操纵
客户端从远程ftp服务器推出,结束传输
FTP文件文件表示
分三段表示ftp服务器上的文件
HOST:主机地址,以ftp开头
DIR:目录,表示文件所在本地的路径、
File: 文件名称