早上好,社区。
经过几个小时的谷歌我开始这个线程。我正在尝试使用 python 套接字模块从 www 下载图片。我正在使用“recv()”获取图片的来源,并将其以二进制模式写入文件。使用“answer.split("image/jpeg")”从标题中拆分内容并不能解决问题。
这是我的代码:
import socket
socket.setdefaulttimeout(30)
HOST = 'ict.de'
PORT = 80
def makestr(s):#create paket-string from list
rs = ""
for x in range(0,len(s)-1):
rs+=s[x]+"\r\n"
rs+="\r\n"
return rs
def sendcap(sdata):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(sdata)
recvd=""
while True:
data = s.recv(1024)
if not data: print " Done "; break
recvd += data
data = recvd.split("image/jpeg")[1]
s.close()
return data
xy = []
xy.append("GET /fileadmin/ict/images/Presse/Download-Button_1700x1000.jpg HTTP/1.1")
xy.append("Host: www.ict.de")
xy.append("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0")
xy.append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
xy.append("Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3")
xy.append("Accept-Encoding: gzip, deflate")
xy.append("DNT: 1")
xy.append("Connection: keep-alive")
data = sendcap(makestr(xy))
f = open("logo.jpg","wb")
f.write(data)
f.close()
纯文本中的数据是这样的(没有标题,在图像/jpeg 处拆分)“ÿØÿá5ExifMM*bj(1r2Ž‡i¤Ð ü€' ü€'Adobe Photoshop CS5 Windows2012:03:05 13:37:44 ¤è&( . ÿHHÿØÿíAdobe_CMÿîAdobed€ÿÛ„ ÿÀ^ "ÿÝ ÿÄ? 3!1AQa"q2'¡±B#$RÁb34r,ÑC%'Sðáñcs5¢²ƒ&D"TdE£t6ÒUâeò³„"
看起来像二进制数据。
当我尝试使用 windows 图片显示打开文件时,会出现错误,即文件已损坏。
希望有人能够帮助我。