python套接字获取

发布于 2021-01-29 17:42:06

从堆栈溢出的其他帖子中应该可以正常工作

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我知道这是不是做到这一点的最好办法,而且有像库httpliburllib2在那里,但我不能使用那些为这个项目(这是学校)。我必须使用socket图书馆

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您忘记在请求行之后发送空白行:

    s.sendall("GET / HTTP/1.1\r\n\r\n")
    

    此外,HTTP 1.1指定您应添加HTTP 1.1
    RFC
    Host的“主机”部分中记录的标头字段。

    s.sendall("GET / HTTP/1.1\r\nHost: www.cnn.com\r\n\r\n")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看