python httplib / urllib obtener nombre de archivo

¿Existe la posibilidad de obtener el nombre de archivo

eg xyz.com/blafoo/showall.html 

¿Si trabajas con urllib o httplib?

¿Para que pueda guardar el archivo con el nombre de archivo en el servidor?

si vas a sitios como

 xyz.com/blafoo/ 

No puedes ver el nombre del archivo.

Gracias

Para obtener el nombre de archivo de los encabezados http de respuesta:

 import cgi response = urllib2.urlopen(URL) _, params = cgi.parse_header(response.headers.get('Content-Disposition', '')) filename = params['filename'] 

Para obtener el nombre de archivo de la URL:

 import posixpath import urlparse path = urlparse.urlsplit(URL).path filename = posixpath.basename(path) 

No tiene mucho sentido lo que estás preguntando. Lo único que tienes es la URL. Extraiga la última parte de la URL o puede verificar la respuesta HTTP para algo como

 content-disposition: attachment;filename="foo.bar" 

Este encabezado puede ser configurado por el servidor para indicar que el nombre del archivo es foo.bar . Esto generalmente se usa para descargas de archivos o algo similar.

Busqué su pregunta en google y vi que fue respondida en stackoverflow antes de que crea.

Intenta mirar este post:

Usando urllib2 en Python. ¿Cómo obtengo el nombre del archivo que estoy descargando?

El servidor suele incluir el nombre de archivo a través del encabezado de disposición de contenido:

 content-disposition: attachment; filename=foo.pdf 

Tienes acceso a los encabezados a través de

 result = urllib2.urlopen(...) result.info() <- contains the headers i>>> import urllib2 ur>>> result = urllib2.urlopen('http://zopyx.com') >>> print result > >>> result.info()  >>> result.info().headers ['Date: Mon, 04 Apr 2011 02:08:28 GMT\r\n', 'Server: Zope/(unreleased version, python 2.4.6, linux2) ZServer/1.1 

Plone / 3.3.4 \ r \ n ‘,’ Content-Length: 15321 \ r \ n ‘,’ Content-Type: text / html; charset = utf-8 \ r \ n ‘,’ Vía: 1.1 http://www.zopyx.com \ r \ n ‘,’ Control de caché: max-age = 3600 \ r \ n ‘,’ Caduca: Lun, 04 de abril de 2011 03:08:28 GMT \ r \ n ‘,’ Conexión: cerrar \ r \ n ‘]

Ver

http://docs.python.org/library/urllib2.html

Utilice urllib.request.Request :

 import urllib req = urllib.request.Request(url, method='HEAD') r = urllib.request.urlopen(req) print(r.info().get_filename()) 

Ejemplo:

 In[1]: urllib.request.urlopen(urllib.request.Request('https://httpbin.org/response-headers?content-disposition=%20attachment%3Bfilename%3D%22example.csv%22', method='HEAD')).info().get_filename() Out[1]: 'example.csv'