我的问题是理论上的:我们可以使用 urllib库(urlopen)返回html页面。我了解data = mysock.recv(512)
的行为与接收到的数据(UTF-8或ASCII)的document.read()
相同。
下面几行中的哪些代码可用作open('document')
函数?open('document')
定位指定的文件并检查是否存在,我猜是mysock.send(cmd)
是等效的,因为它将GET请求发送到Web服务器以从地址获取指定的文件。
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()
编辑:我似乎已经找到了答案,但是还缺少更全面的推理。
最佳答案
经过仔细研究,正确的答案是:mysock.connect(('data.pr4e.org', 80))
的行为类似于open('romeo.txt')
;尽管它只能通过端口80连接到主机域,但是open()
有所不同,因为它在定义的位置定位了'romeo.txt'的存在。
关于python - 使用Python通过套接字(端口80)连接基本访问Web数据(html),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55275425/