How can I list files and folders if I only have an IP-address?
With urllib and others, I am only able to display the content of the index.html
file. But what if I want to see which files are in the root as well?
I am looking for an example that shows how to implement username and password if needed. (Most of the time index.html is public, but sometimes the other files are not).
Use
requests
to get page content andBeautifulSoup
to parse the result.For example if we search for all
iso
files athttp://cdimage.debian.org/debian-cd/8.2.0-live/i386/iso-hybrid/
:You can use the following script to get names of all files in sub-directories and directories in a HTTP Server. A file writer can be used to download them.
Zety provides a nice compact solution. I would add to his example by making the
requests
component more robust and functional:You cannot get the directory listing directly via HTTP, as another answer says. It's the HTTP server that "decides" what to give you. Some will give you an HTML page displaying links to all the files inside a "directory", some will give you some page (index.html), and some will not even interpret the "directory" as one.
For example, you might have a link to "http://localhost/user-login/": This does not mean that there is a directory called user-login in the document root of the server. The server interprets that as a "link" to some page.
Now, to achieve what you want, you either have to use something other than HTTP (an FTP server on the "ip address" you want to access would do the job), or set up an HTTP server on that machine that provides for each path (http://192.168.2.100/directory) a list of files in it (in whatever format) and parse that through Python.
If the server provides an "index of /bla/bla" kind of page (like Apache server do, directory listings), you could parse the HTML output to find out the names of files and directories. If not (e.g. a custom index.html, or whatever the server decides to give you), then you're out of luck :(, you can't do it.
HTTP does not work with "files" and "directories". Pick a different protocol.