模拟浏览器请求数据:
- import socket
- # 创建 TCP 链接
- tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- # DNS 解析和链接 HTTP 服务器
- tcp_socket.connect(("www.qq.com", 80))
- # 编写请求头, 发送 HTTP 请求报文
- # 请求行
- request_line = "GET / HTTP/1.1\r\n"
- # 请求头, 设置请求域名
- request_header = "www.qq.com\r\n"
- request_data = request_line + request_header + "\r\n"
- # 发送请求
- tcp_socket.send(request_data.encode("utf-8"))
- # 接收响应报文, 指定长度
- response_data = tcp_socket.recv(4096)
- # 对响应报文进行解析 -- 切割
- response_str_data = response_data.decode("utf-8")
- print(response_data)
- # "\r\n\r\n" 之后的数据就是响应体数据
- index = response_str_data.find("\r\n\r\n")
- # 切割出的数据就是文件数据
- html_data = response_str_data[index+4:]
- # 在当前路径下新建文件存储响应数据
- with open("index.html", "wb") as file:
- file.write(html_data.encode())
- # 关闭套接字
- tcp_socket.close()
来源: http://www.bubuko.com/infodetail-2552746.html