一个输出网站源代码的python套接字客户端,为什么这不起作用?

Ben*_*ey4 1 python sockets networking client

以下代码不输出任何内容(为什么?).

#!/usr/bin/python           
import socket             

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                 

s.connect(("www.python.org" , 80))
print s.recv(4096)
s.close    
Run Code Online (Sandbox Code Playgroud)

当您在浏览器中查看"查看源代码"时,我需要更改以输出python网站的源代码?

var*_*tec 11

HTTP请求/响应协议.您没有发送任何请求,因此您没有收到任何回复.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                 

s.connect(("www.python.org" , 80))
s.sendall("GET /\r\n") # you're missing this line
print s.recv(4096)
s.close    
Run Code Online (Sandbox Code Playgroud)

当然,这将执行最原始的HTTP/1.0请求,而不处理HTTP错误,HTTP重定向等.我建议将其用于实际使用,除了将其作为练习以熟悉套接字编程和HTTP.

对于HTTP,Python提供了一些内置模块:httplib(位较低级别),urlliburllib2(高级别).