Как загрузить zip-файл в python с помощью urllib2?

Два вопроса. Я пытаюсь загрузить несколько архивных подкастов Cory Doctorow из интернет-архива. Старые, которые не входят в мой канал iTunes. Я написал сценарий, но загруженные файлы не были правильно отформатированы.

Q1 – Что я могу изменить для загрузки zip-файлов? Q2. Каков лучший способ передать переменные в URL?

# and the base url. def dlfile(file_name,file_mode,base_url): from urllib2 import Request, urlopen, URLError, HTTPError #create the url and the request url = base_url + file_name + mid_url + file_name + end_url req = Request(url) # Open the url try: f = urlopen(req) print "downloading " + url # Open our local file for writing local_file = open(file_name, "wb" + file_mode) #Write to our local file local_file.write(f.read()) local_file.close() #handle errors except HTTPError, e: print "HTTP Error:",e.code , url except URLError, e: print "URL Error:",e.reason , url # Set the range var_range = range(150,153) # Iterate over image ranges for index in var_range: base_url = 'http://www.archive.org/download/Cory_Doctorow_Podcast_' mid_url = '/Cory_Doctorow_Podcast_' end_url = '_64kb_mp3.zip' #create file name based on known pattern file_name = str(index) dlfile(file_name,"wb",base_url 

Этот сценарий был адаптирован здесь

2 Solutions collect form web for “Как загрузить zip-файл в python с помощью urllib2?”

Вот как я занимаюсь созданием и загрузкой URL. Я обязательно укажу файл как базовое имя url (последний бит после конечной косой черты), и я также использую предложение with для открытия файла для записи. Это использует ContextManager, который хорош, потому что он закрывает этот файл при выходе из блока. Кроме того, я использую шаблон для построения строки для URL-адреса. urlopen не нужен объект запроса, просто строка.

 import os from urllib2 import urlopen, URLError, HTTPError def dlfile(url): # Open the url try: f = urlopen(url) print "downloading " + url # Open our local file for writing with open(os.path.basename(url), "wb") as local_file: local_file.write(f.read()) #handle errors except HTTPError, e: print "HTTP Error:", e.code, url except URLError, e: print "URL Error:", e.reason, url def main(): # Iterate over image ranges for index in range(150, 151): url = ("http://www.archive.org/download/" "Cory_Doctorow_Podcast_%d/" "Cory_Doctorow_Podcast_%d_64kb_mp3.zip" % (index, index)) dlfile(url) if __name__ == '__main__': main() 

Старое решение на SO по линиям того, что вы хотите:

  • загрузите zip-файл на локальный диск и извлеките все файлы в папку назначения с помощью python 2.5

  • Python и urllib

  • Как отправить не-ASCII-символы с помощью httplib, когда content-type - "application / xml"
  • Как я могу реализовать свой запрос на завивки PHP на Python
  • Как сделать метод HTTP DELETE с помощью urllib2?
  • Возврат Google Search To Python
  • Получить данные переменных внутри тега скрипта в Python или Content, добавленные из js
  • Альтернатива urllib.urlretrieve в Python 3.5
  • Я загружаю файл, используя Python urllib2. Как проверить размер файла?
  • Извлечь первые n байтов из URL-адреса
  • urllib2 выдает ошибку для URL-адреса, в то время как он правильно открывается в браузере
  • Python urllib2 Продвинутый крюк
  • Прочитать файл-объект как строку в python
  • Python - лучший язык программирования в мире.