如何使用 python 套接字获取 html 代码
How to get html code using python sockets
所以我试图只使用 python 套接字而不是任何其他库(如 urllib)来获取 google 的源代码。我不明白为什么我的 GET 请求不起作用,我尝试了所有可能的方法。这是我的代码,它很小,我不想了解太多细节。只是在寻找用于获取源代码的协议。我假设它是 GET
方法,但它不起作用。我需要一个类似于 urllib.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 / \r\n"\
"Host: www.google.com\r\n";
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 /\r\n")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('\r\n\r\n',1)[1]
所以我试图只使用 python 套接字而不是任何其他库(如 urllib)来获取 google 的源代码。我不明白为什么我的 GET 请求不起作用,我尝试了所有可能的方法。这是我的代码,它很小,我不想了解太多细节。只是在寻找用于获取源代码的协议。我假设它是 GET
方法,但它不起作用。我需要一个类似于 urllib.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 / \r\n"\
"Host: www.google.com\r\n";
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 /\r\n")
val = s.recv(10000)
# Split off the HTTP headers
val = val.split('\r\n\r\n',1)[1]