【发布时间】:2016-03-26 02:00:24
【问题描述】:
所以我试图仅使用 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();
【问题讨论】:
-
https://www.google.com不是主机名(它是 URL),所以gethostbyname当然会失败。 -
你不需要分号,除非你在 Python 中将多条语句放在一行 :)
标签: python sockets getaddrinfo