想要制作一个工具,以便从特定链接保存图像,但是遇到了问题。
我的代码如下:
import urllib
urllib.urlretrieve(url, "img.jpg")
问题是,如果我使用谷歌的任何链接,它可以完美无缺地工作。
例如:
- 作品
但如果我想得到这个特定的图像:
它将文件保存为.jpg,但是当我想打开它时,我得到的文件格式不受支持。关于如何解决它的想法或背后的原因是什么?
答案 0 :(得分:1)
问题是该网站阻止了基于浏览器签名的下载。将您的img.jpg
文件重命名为page.html
并在浏览器中打开,然后您会看到如下内容:
错误1010 Ray ID:xxxxxxxxx•2018-06-08 10:39:01 UTC
拒绝访问
发生了什么事?
本网站的所有者(asset.keepeek-cache.com)已禁止您的 根据您的浏览器签名(xxxxxxxxxx)进行访问。
Cloudflare Ray ID:xxxxxxxxxx•您的IP:xx.xx.xx.xx• 表演& Cloudflare的安全性
一旦您考虑过您是否想要违反网站所有者的意愿,您可以通过执行来改变您的用户代理(例如)
import urllib
# Change user agent to look like Firefox
urllib.URLopener.version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
# Download file with new user agent
urllib.urlretrieve(url, "img.jpg")
为我解决了这个问题。