Как правильно скачивать файлы через HTTP через python-urllib2? - PullRequest
5 голосов
/ 01 июля 2011

Я написал парсер на python для загрузки изображений из интернета:

import urllib2

for i in xrange(1,10):
  r = urllib2.urlopen('http://example.com/'+str(i)+'.gif'))
  f = open('C:\\' + str(i) + '.gif', 'w+')
  f.write(r.read())
  f.close()

Изображения не могут быть открыты. Windows говорит «Ошибка при создании образа». Но я обнаружил, что каждая строка полученного файла на 1 байт меньше этой строки исходного файла, но обе выглядят одинаково. Как скачать правильный файл?

Ответы [ 3 ]

13 голосов
/ 01 июля 2011

При работе с окнами вам может понадобиться поставить "двоичный" флаг b в открытом состоянии ...

f = open(r'C:\\'+str(i)+'.gif','wb')
5 голосов
/ 01 июля 2011

Вы можете попробовать urllib.urlretrieve - он обрабатывает большинство деталей самостоятельно.
Итак, ваш код будет выглядеть так:

for i in xrange(1,10):
    urllib.urlretrieve('http://example.com/'+str(i)+'.gif'), 'C:\'+str(i)+'.gif','w+')
5 голосов
/ 01 июля 2011

В Windows вам нужно указать 'wb', а не 'w +'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...