http-模拟浏览器获取数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDNgaoqingrui/article/details/80827783
                                                                       http-模拟浏览器获取数据


import socket


def mian():
    client_sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_sk.connect((' ntlias3.boxuegu.com ', 80))
    # 请求行
    request_line = "GET / HTTP/1.1\r\n"
    # 请求头
    request_header = 'Host: ntlias3.boxuegu.com \r\nConnection:close\r\n'# 短连接Connection:close,不写默认长连接
    # 准备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()

猜你喜欢

转载自blog.csdn.net/CSDNgaoqingrui/article/details/80827783