requests httperror from build_opener and python urllib2

httperror - ¿Cómo descargo un archivo zip en python usando urllib2?



urllib2 python 3 (2)

Así es como me ocuparía de la construcción y descarga de URL. Me estoy asegurando de nombrar el archivo como el nombre base de la url (el último bit después de la barra diagonal) y también estoy usando la cláusula with para abrir el archivo para escribir. Esto utiliza un ContextManager que es bueno porque cerrará ese archivo cuando el bloque salga. Además, uso una plantilla para construir la cadena para la url. urlopen no necesita un objeto de solicitud, solo una cadena.

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()

Pregunta de dos partes. Estoy intentando descargar varios podcasts archivados de Cory Doctorow desde el archivo de Internet. Los viejos que no entran en mi feed de iTunes. He escrito el guión pero los archivos descargados no están formateados correctamente.

Q1 - ¿Qué cambio para descargar los archivos zip mp3? P2: ¿Cuál es una mejor manera de pasar las variables a la 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

Este guión fue adaptado desde here