2014-02-20 129 views
0

我想制作一个程序从一些url下载jpg文件(日本漫画),我在网上看到了一些例子,但它们不适用于我的情况:尝试通过python下载urllib2下载jpg文件时出错

import urllib2 
jpgfile = urllib2.urlopen("http://mangas2013.centraldemangas.com.br/attack_on_titan/attack_on_titan001-01.jpg") 
output = open('attack_on_titan001-01.jpg','wb') 
output.write(jpgfile.read()) 
output.close() 

有了这个网址,我得到了一个28kb的jpg文件文件(原始为120kb),当我尝试打开时,图像不会出现在Windows图片浏览器中......这很奇怪,因为我可以下载并查看jpg文件从其他网站使用相同的代码...

我是一个Python新手,所以尝试给我最简单的答案可能。

+0

也许服务器试图阻止您下载? –

+0

你可以尝试'请求'。 'requests.get(url)'然后'f.write(response.content)'。 –

回答

0

您可以尝试使用urllib.urlretrieve()而不是urllib2.urlopen

import urllib 
jpg_filename, headers = urllib.urlretrieve('http://mangas2013.centraldemangas.com.br/attack_on_titan/attack_on_titan001-01.jpg', 'attack_on_titan001-01.jpg') 

编辑:我重新读你的问题,我不确定为什么该网站特别是不起作用。这可能是因为在访问该文件之前需要进行身份验证。检查你得到什么回应:

import urllib2 
jpgfile = urllib2.urlopen("http://mangas2013.centraldemangas.com.br/attack_on_titan/attack_on_titan001-01.jpg") 
print jpgfile.getcode() 
print jpgfile.read() 

这可能是一个重定向,因为缺乏身份验证。

+0

我得到了同样的错误,你是否尝试运行你的代码? –

+0

您很可能需要在该网站上进行身份验证才能访问jpeg文件。您可以使用代理服务器和浏览器查看有效的请求以查看该网站用于身份验证的内容,但我确定您违反了某些服务条款。它可能需要设置正确的cookie值。退房http://stackoverflow.com/a/8206372/2337592 –

+0

我得到了一个长的HTML代码作为回应,代码来自漫画的主页:http://centraldemangas.com.br/mangas/info/attack-上泰坦 –