使用python下载文件而不知道它的扩展名。 - 内容类型 - 流

时间:2018-04-13 21:33:38

标签: python python-3.x stream http-headers python-requests

嘿,我刚做了一些研究,发现我可以从网址下载图像,这些图像以 filename.extension 结尾,如 000000.jpeg 。我现在想知道如何下载一张没有任何扩展名的图片。 这是我的网址,我想下载图片http://books.google.com/books/content?id=i2xKGwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api 当我将网址直接放到浏览器时,它会显示一个图像

此外这是我尝试过的:

from six.moves import urllib

thumbnail='http://books.google.com/books/content?id=i2xKGwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api'

img=urllib.request.Request(thumbnail)
pic=urllib.request.urlopen(img)
pic=urllib.request.urlopen(img).read()

Anyhelp将受到如此多的赞赏

1 个答案:

答案 0 :(得分:1)

这是使用响应标头执行此操作的方法:

import requests
import time

r = requests.get("http://books.google.com/books/content?id=i2xKGwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api", stream=True)
ext = r.headers['content-type'].split('/')[-1] # converts response headers mime type to an extension (may not work with everything)
with open("%s.%s" % (time.time(), ext), 'wb') as f: # open the file to write as binary - replace 'wb' with 'w' for text files
    for chunk in r.iter_content(1024): # iterate on stream using 1KB packets
        f.write(chunk) # write the file