我试图下载具有url更改的图像,但出现错误。

url_image="http://www.joblo.com/timthumb.php?src=/posters/images/full/"+str(title_2)+"-poster1.jpg&h=333&w=225"

user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
headers = {'User-Agent': user_agent}
req = urllib.request.Request(url_image, None, headers)


print(url_image)
#image, h = urllib.request.urlretrieve(url_image)
with urllib.request.urlopen(req) as response:
    the_page = response.read()

#print (the_page)


with open('poster.jpg', 'wb') as f:
    f.write(the_page)


追溯(最近一次通话):
  文件“ C:\ Users \ luke \ Desktop \ scraper \ imager finder.py”,第97行,在
    使用urllib.request.urlopen(req)作为响应:
  urlopen中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,第162行
    返回opener.open(URL,数据,超时)
  打开的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,第465行
    响应= self._open(要求,数据)
  _open中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,第483行
    '_open',要求)
  _call_chain中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,第443行
    结果= func(* args)
  文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,行1268,位于http_open
    返回self.do_open(http.client.HTTPConnection,req)
  在do_open中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py”,第1243行
    r = h.getresponse()
  在getresponse中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py”,行1174
    response.begin()
  在开始的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py”中,第282行
    版本,状态,原因= self._read_status()
  _read_status中的文件“ C:\ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py”,第264行
    提高BadStatusLine(线)
http.client.BadStatusLine:

最佳答案

我的建议是使用urlib2。另外,我写了一个不错的函数(我认为),如果服务器支持,它也将允许gzip编码(减少带宽)。我用它来下载社交媒体文件,但应该可以使用。

我会尝试调试您的代码,但是由于它只是一个代码段(错误消息的格式设置不正确),因此很难确切地知道错误的发生位置(代码段中肯定不是第97行)。

这虽然没有那么短,但是很明显并且可以重用。这是python 2.7,看起来您正在使用3-在这种情况下,您会用Google搜索其他一些问题,以解决如何在python 3中使用urllib2的问题。

import urllib2
import gzip
from StringIO import StringIO

def download(url):
    """
    Download and return the file specified in the URL; attempt to use
    gzip encoding if possible.
    """
    request = urllib2.Request(url)
    request.add_header('Accept-Encoding', 'gzip')
    try:
        response = urllib2.urlopen(request)
    except Exception, e:
        raise IOError("%s(%s) %s" % (_ERRORS[1], url, e))
    payload = response.read()
    if response.info().get('Content-Encoding') == 'gzip':
        buf = StringIO(payload)
        f = gzip.GzipFile(fileobj=buf)
        payload = f.read()
    return payload

def save_media(filename, media):
    file_handle = open(filename, "wb")
    file_handle.write(media)
    file_handle.close()

title_2 = "10-cloverfield-lane"
media = download("http://www.joblo.com/timthumb.php?src=/posters/images/full/{}-poster1.jpg&h=333&w=225".format(title_2))
save_media("poster.jpg", media)

关于python - Python下载带有变量的图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38508715/

10-14 04:22