下面的代码没有输出任何东西(为什么?)。
#!/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()
我需要更改什么才能输出 python 网站的源代码,就像您在浏览器中转到 view source 时看到的那样?
请您参考如下方法:
HTTP是request/response protocol .您没有发送任何请求,因此您没有收到任何响应。
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()
当然,这将执行最原始的 HTTP/1.0 请求,不处理 HTTP 错误、HTTP 重定向等。我不推荐将它用于实际使用,而不是将其作为熟悉自己的练习使用套接字编程和 HTTP。
对于 HTTP,Python 提供了一些内置模块:httplib (低一点),urllib和 urllib2 (高水平的)。
