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