如何在python中使用基于TCP的HTTP下载图像?我确实下载了图像,但它说无法打开此文件(这可能意味着并非所有字节都被接收或写入)。我的任务是使用套接字库,没有 urlib 或请求。 如有任何帮助,我们将不胜感激。
serverPort = 80
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect(('google.com', serverPort))
print("ready to receive!")
output = 'GET http://google.com/favicon.ico HTTP/1.0\r\nHOST: google.com\r\n\r\n'
print(output)
output1 = ('b' + output)
clientSocket.sendall(output1.encode())
reply = b''
while True:
data = clientSocket.recv(1024)
if not data:
break
reply += data
headers = reply.split(b'\r\n\r\n')[0]
image = reply[len(headers) + 4:]
f = open('image_test.ico', 'wb')
f.write(image)
f.close()
clientSocket.close()
最佳答案
试试这个...
import socket
import select
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('google.com', 80))
s.sendall(b'GET /favicon.ico HTTP/1.0\r\n\r\n')
reply = b''
while select.select([s], [], [], 3)[0]:
data = s.recv(2048)
if not data: break
reply += data
headers = reply.split(b'\r\n\r\n')[0]
image = reply[len(headers)+4:]
# save image
f = open('google.ico', 'wb')
f.write(image)
f.close()
关于python - 如何在python中使用基于TCP的HTTP下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53827966/