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: 文件名称

原文地址:https://www.cnblogs.com/Burtit/p/9483847.html