【发布时间】:2015-07-18 06:17:45
【问题描述】:
好的,我正在尝试从 Gucci 网站上抓取 jpg 图片。以此为例。
我尝试了 urllib.urlretrieve,它不起作用,因为 Gucci 阻止了该功能。所以我想使用请求来抓取图像的源代码,然后将其写入 .jpg 文件。
image = requests.get("http://www.gucci.com/images/ecommerce/styles_new/201501/web_full/277520_F4CYG_4080_001_web_full_new_theme.jpg").text.encode('utf-8')
我对它进行了编码,因为如果我不这样做,它会一直告诉我 gbk 无法对字符串进行编码。
然后:
with open('1.jpg', 'wb') as f:
f.write(image)
看起来不错吧?但结果是——无法打开jpg文件。没有图! Windows 告诉我 jpg 文件已损坏。
可能是什么问题?
我在想,也许我在抓取图像时丢失了一些信息,或者某些字符被错误地抓取了。但是我怎样才能知道是哪一个呢?
我在想可能是某些信息通过编码丢失了。但是如果我不编码,我什至不能打印它,更不用说将它写入文件了。
会出什么问题?
【问题讨论】:
-
我发现wget 更适合这样的任务
-
wget 还在使用 urllib.urlretrieve,被 Gucci.com 屏蔽了
-
文件已损坏,因为您没有写入任何内容。你期望
f.write()做什么?如果要保存image响应对象的内容,需要明确说明。
标签: python image python-3.x jpeg python-requests