Ошибка при загрузке и сохранении изображения с использованием Python - PullRequest
0 голосов
/ 17 февраля 2010

Я написал код для загрузки и сохранения изображений с сайта. Он работал хорошо, но для некоторых URL-адресов он показывает ошибку. У меня есть код вставки ниже

import urllib2
import webbrowser

imageurl='http://www.example.com/'+image[s]
opener1 = urllib2.build_opener()
page1=opener1.open(imageurl)
my_picture=page1.read()
image1=image[s].replace("/","")
fout = open('images/tony/'+image1, "wb")
fout.write(my_picture)
fout.close()

На самом деле я получаю много значений image [s] и работает почти по условию. Но когда значение image [s] = images / PG013001 GROUP 2.jpg, компилятор выдает ошибку

  File "leather.py", line 37, in get_leather
    page1=opener1.open(imageurl)
  File "D:\Program Files\Python\lib\urllib2.py", line 395, in open
    response = meth(req, response)
  File "D:\Program Files\Python\lib\urllib2.py", line 508, in http_response
    'http', request, response, code, msg, hdrs)
  File "D:\Program Files\Python\lib\urllib2.py", line 433, in error
    return self._call_chain(*args)
  File "D:\Program Files\Python\lib\urllib2.py", line 367, in _call_chain
    result = func(*args)
  File "D:\Program Files\Python\lib\urllib2.py", line 516, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

Я думал, что соответствующий imageurl, то есть 'http://www.example.com/images/PG013001 GROUP 2.jpg', не существует, но когда он проверен, он существует. Пожалуйста, предложите исправление

1011 * привет *

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

URL не могут включать пробелы напрямую; это просто запрещено. То, что вы хотите сделать, это заключить в кавычки или закодировать пробелы в имени файла, чтобы URL стал допустимым. Вот википедия по этому вопросу.

Итак, вы хотите процитировать URL-адреса, которые вы передаете urllib2. В своем коде вы можете сделать это, изменив одну строку так:

page1=opener1.open(urllib2.quote(imageurl))

Это нужно сделать.

1 голос
/ 17 февраля 2010

Вы должны исправить ссылку. Попробуйте это:

>>> import urllib
>>> urllib.quote("images/PG013001 GROUP 2.jpg")
'images/PG013001%20GROUP%202.jpg'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...