simple httpsimpleserver for example accept python html directory ip-address

httpsimpleserver - python simplehttpserver port



Python para listar los archivos y directorios HTTP (4)

HTTP no funciona con "archivos" y "directorios". Elija un protocolo diferente.

¿Cómo puedo hacer una lista de archivos y carpetas si solo tengo una dirección IP? Con urllib y otros, solo puedo mostrar el contenido del archivo index.html. Pero, ¿qué sucede si también quiero ver qué archivos están en la raíz? Estoy buscando un ejemplo que muestre cómo implementar el nombre de usuario y la contraseña si es necesario. (La mayoría de las veces, index.html es público, pero a veces los demás archivos no).

¡¡Gracias por adelantado!!


No puede obtener la lista del directorio directamente a través de HTTP, como dice otra respuesta. Es el servidor HTTP que "decide" qué regalarle. Algunos le darán una página HTML que mostrará enlaces a todos los archivos dentro de un "directorio", algunos le darán una página (index.html) y otros ni siquiera interpretarán el "directorio" como uno solo.

Por ejemplo, puede tener un enlace a "http: // localhost / user-login /": Esto no significa que haya un directorio llamado user-login en la raíz del documento del servidor. El servidor lo interpreta como un "enlace" a alguna página.

Ahora, para lograr lo que desea, debe usar algo que no sea HTTP (un servidor FTP en la "dirección IP" a la que desea acceder haría el trabajo), o configurar un servidor HTTP en esa máquina que proporciona para cada ruta (http://192.168.2.100/directory) una lista de archivos (en cualquier formato) y analizar eso a través de Python.

Si el servidor proporciona un tipo de página "index of / bla / bla" (como el servidor Apache, listados de directorios), podría analizar el resultado HTML para encontrar los nombres de los archivos y directorios. Si no (por ejemplo, un index.html personalizado, o lo que el servidor decida darle ), entonces no tiene suerte :(, no puede hacerlo.


Utilice las requests para obtener contenido de la página y BeautifulSoup para analizar el resultado.
Por ejemplo, si buscamos todos los archivos iso :

from bs4 import BeautifulSoup import requests url = ''http://cdimage.debian.org/debian-cd/8.2.0-live/i386/iso-hybrid/'' ext = ''iso'' def listFD(url, ext=''''): page = requests.get(url).text print page soup = BeautifulSoup(page, ''html.parser'') return [url + ''/'' + node.get(''href'') for node in soup.find_all(''a'') if node.get(''href'').endswith(ext)] for file in listFD(url, ext): print file


Puede usar la siguiente secuencia de comandos para obtener nombres de todos los archivos en subdirectorios y directorios en un servidor HTTP. Se puede usar un escritor de archivos para descargarlos.

from urllib.request import Request, urlopen, urlretrieve from bs4 import BeautifulSoup def read_url(url): url = url.replace(" ","%20") req = Request(url) a = urlopen(req).read() soup = BeautifulSoup(a, ''html.parser'') x = (soup.find_all(''a'')) for i in x: file_name = i.extract().get_text() url_new = url + file_name url_new = url_new.replace(" ","%20") if(file_name[-1]==''/'' and file_name[0]!=''.''): read_url(url_new) print(url_new) read_url("www.example.com")