python网络编程与爬虫

第三天

网络编程

  • ipv4\ipv6
  • 端口与进程
    • 知名端口与动态端口
  • 套接字(socket)通信
    • udp打洞
    • 个人计算机是没有公网ip的。
    • “你说一句我答一句”客户端/服务端(tcp)

server端

import socket
# 你问我答聊天器
# 创建一个套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#绑定监听端口,本机ip+端口
address = ('', 7788)
server.bind(address)

#开始监听,并设置最大连接数
server.listen(5)
print(u'waitting for connect...')

# 等待连接,连接后返回一个套接字对象和客户端的ip;端口元组。
connect, (host,port) = server.accept()
message = 0
while True:
	# 接收客户端数据
	data = connect.recv(1024)
	#接收到quit就退出
	if data == b'quit' or data == b'':
		print('the client has quit.')
		break
	else:
		
		#发送数据给客户端
		print('the client '+host+' say: ' + data.decode('gbk'))
		message = input()
		message = message.encode('gbk')
		connect.sendall(message)

#结束socket
server.close()

客户端

import socket
# 创建一个socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 主动去连接IP为******,端口为6688的进程
client.connect(('************', 7788))

while True:
    # 接受控制台的输入
    data = input()
    # 对数据进行编码格式转换,不然报错
    data = data.encode('gbk')
    # 如果输入quit则退出连接
    if data == b'quit':
        print(b'connect quit.')
        break
    else:
        # 发送数据
        client.sendall(data)
        # 接收服务端的反馈数据
        rec_data = client.recv(1024)
        print('form server receive:' + rec_data.decode('gbk'))
# 发送数据告诉服务器退出连接
client.sendall(b'quit')
client.close()

爬虫基本框架的使用

  • request库的使用
  • get请求和post请求
  • 使用session模块自动处理cookie,post请求中使用cookie关键字(字典推导式)
cookie = ""
cookie = {i.split("=")[0]:i.split("=")[1] for i in cookie.split("; ")}
  • 使用post登录的三种方式
    python网络编程与爬虫_第1张图片

正则表达式

  • 括号
  • 原始字符串’r’

你可能感兴趣的:(寒假学习)