版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDNgaoqingrui/article/details/80827783
http-模拟浏览器获取数据
import socket
def mian():
client_sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 请求行
request_line = "GET / HTTP/1.1\r\n"
# 请求头
# 准备http请求报文数据
request_content = request_line + request_header + '\r\n'
# 发送http请求报文数据
client_sk.send(bytes(request_content.encode('utf-8')))
# 接收服务端http响应报文数据
result = b'' # 定义空的二进制变量
while True:
# 提示: 服务端断开连接,recv会解阻塞,返回的数据长度0
# 提示: 以后可以通过Content-Length判断服务端发送数据的长度
recv_data = client_sk.recv(1024)
if recv_data:
result += recv_data
if result.rfind('0\r\n'.encode('utf-8')) != -1:# 当响应结束后结束循环防止阻塞
break
else:
break
print(result)
response_content = result.decode('utf-8')
# 根据指定标识数据进行分割
response_list = response_content.split('\r\n\r\n', maxsplit=1)
print(len(response_list))
print(response_list[1])
client_sk.close()
if __name__ == '__main__':
mian()