如果我只有一個IP地址,如何列出文件和文件夾?Python以列出HTTP文件和目錄
使用urllib等,我只能顯示index.html
文件的內容。但是,如果我想查看哪些文件在根目錄下呢?
我正在尋找一個示例,說明如果需要的話可以實現用戶名和密碼。 (大部分時間index.html是公開的,但有時其他文件不是)。
如果我只有一個IP地址,如何列出文件和文件夾?Python以列出HTTP文件和目錄
使用urllib等,我只能顯示index.html
文件的內容。但是,如果我想查看哪些文件在根目錄下呢?
我正在尋找一個示例,說明如果需要的話可以實現用戶名和密碼。 (大部分時間index.html是公開的,但有時其他文件不是)。
HTTP不適用於「文件」和「目錄」。選擇一個不同的協議。
正如另一個答案所說,您無法直接通過HTTP獲取目錄列表。這是HTTP服務器,「決定」給你什麼。有些會給你一個HTML頁面,顯示「目錄」中所有文件的鏈接,有些會給你一些頁面(index.html),有些甚至不會將「目錄」解釋爲一個頁面。
例如,您可能有一個指向「http:// localhost/user-login /」的鏈接:這並不意味着在服務器的文檔根目錄中有一個名爲user-login的目錄。服務器將其解釋爲某個頁面的「鏈接」。
現在,要實現你想要的,你必須使用HTTP以外的東西(你想訪問的「ip地址」上的FTP服務器可以完成這項工作),或者在該機器上設置一個HTTP服務器它爲每個路徑(http://192.168.2.100/directory)提供了一個文件列表(以任何格式)並通過Python解析。
如果服務器提供「index/bla/bla」類型的頁面(如Apache服務器,目錄列表),則可以解析HTML輸出以找出文件和目錄的名稱。如果沒有(如自定義的index.html,或任何服務器決定給你),那麼你的運氣了:(,你不能這樣做。
使用requests
獲得頁面內容和BeautifulSoup
解析結果
例如,如果我們搜索所有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
你可以用下面的腳本得到子目錄和目錄中的所有文件的名稱在HTTP服務器上的文件作家可以用它們來下載它們。
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")
這篇文章「」應該可以幫助你...希望:) –
2012-08-23 21:35:57