如何使用python套接字获取html代码



所以我试图只使用python套接字而不使用任何其他库(如urlib)来获取谷歌的源代码。我不明白为什么我的GET请求不起作用,我尝试了所有可能的方法。这是我的代码,它很小,我不想得到太多细节。只是在寻找一个用来获取源代码的协议。我以为它是GET方法,但它不起作用。我需要一个类似urlib.request的响应,但只使用python套接字。

  • 如果我通过"https://www.google.com"到socket.gethostbyname(),它在getaddrinfo上失败
  • 此外,当我尝试从python.org获取请求时,while循环永远不会结束


import socket;
s=socket.socket();
host=socket.gethostbyname("www.google.com");
port=80;
send_buf="GET / rn"
        "Host: www.google.comrn";
s.connect((host, port));
s.sendall(bytes(send_buf, encoding="utf-8"));
data="";
part=None;
while( True ):
    part=s.recv(2048);
    data+=str(part, "utf-8");
    if( part==b'' ):
        break;
s.close();

以下对我有效:

import socket
s=socket.socket()
host=socket.gethostbyname('www.google.com')
port=80
s.connect((host,port))
s.sendall("GET /rn")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('rnrn',1)[1]

最新更新