试图下载一个图像文件,我不断得到一个文件说“图像不可用”

2024-04-26 10:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从googlebooksapi下载图书封面图片。它最终给了我这样一个链接:

http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1

如果你点击它,你可以看到它加载和存在。那么,我就用这个代码来下载图片:

import requests
r = requests.get('http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1')
with open('test.jpeg', "wb") as f:      
    f.write(r.content)
    f.close()

但是,我从中得到的图像总是一个9kb的文件,上面写着“image Not Available”(图像不可用),我假设当请求的图像不存在时,它只是来自API。我做错什么了吗?它看起来相当标准和简单,所以我不确定是什么错。你知道吗


Tags: 图像comidhttpimggoogle图片content
1条回答
网友
1楼 · 发布于 2024-04-26 10:18:31

服务器不想回答您,因为它看到请求不是来自浏览器—这是一种常见的做法。例如,我在Chrome中打开图像并复制Chrome作为CURL请求发送的请求,结果成功了。简单发送:

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1'

没有。你知道吗

服务器正在检查用户代理。如果找不到有效的,则不会发送图像。您可以easily fake a user agent,或者使用Mechanize之类的工具来模拟浏览器。保存对img.jpg的响应的CURL请求的一个简单示例是:

curl 'http://books.google.com/books/content?id=Tum3dwFzSngC&printsec=frontcover&img=1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' >> img.jpg

相关问题 更多 >