python套接字获取
从堆栈溢出的其他帖子中应该可以正常工作
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.cnn.com" , 80))
s.sendall("GET / HTTP/1.1\r\n")
print s.recv(4096)
s.close
但由于某种原因,它只是挂在(recv
)上而从不打印。我知道对www.cnn.com的请求将对数据进行分块,但我至少应该从中读取一些信息recv
,对吗?
PS我知道这是不是做到这一点的最好办法,而且有像库
httplib
和urllib2
在那里,但我不能使用那些为这个项目(这是学校)。我必须使用socket
图书馆
-
您忘记在请求行之后发送空白行:
s.sendall("GET / HTTP/1.1\r\n\r\n")
此外,HTTP 1.1指定您应添加HTTP 1.1
RFCHost
的“主机”部分中记录的标头字段。s.sendall("GET / HTTP/1.1\r\nHost: www.cnn.com\r\n\r\n")