0

http ディレクトリ ブラウジングを使用して、ファイルまたはディレクトリが Web サーバー上に存在するかどうかを確認する方法はありますか? 多数のファイルとディレクトリを含むサイトがあります。ディレクトリをトラバースして、サブディレクトリのどこにでも配置できる特定のファイルを見つけたいと考えています。通常os.path.isfile("file_name")、ファイル システムを使用してこれを行うことができますが、これは HTTP でのディレクトリ ブラウジングでは機能しません。どうすればそれができますか?

4

1 に答える 1

3

Web 上でこれを行うのは、ファイル システムで行う場合ほど簡単ではありません。1 つには、それがどの Web サーバーであるかに応じて、フォルダーのリストに違いがあります。そのため、リストがどのようにフォーマットされているかを知る必要があります。たとえば、ほとんどの linux/apache サーバーで私が気づいたパターンは、フォルダーがスラッシュ「/」で終わるということです。ファイルはそうではありません。親フォルダーはスラッシュで始まり、フォルダーはそうではありません…など…

これは、正しい方向に進むための (実際に機能する) 例にすぎません。サンプルを実行するには、BeautifulSoupをインストールする必要があります

import urllib.request
from bs4 import BeautifulSoup

def RecurseLinks(base):

    f = urllib.request.urlopen(base)
    soup = BeautifulSoup(f.read())
    for anchor in soup.find_all('a'):
        href = anchor.get('href')
        if (href.startswith('/')):
            print ('skip, most likely the parent folder -> ' + href)
        elif (href.endswith('/')):
            print ('crawl -> [' + base + href + ']')
            RecurseLinks(base + href) # make recursive call w/ the new base folder
        else:
            print ('some file, check if xyz.txt -> ' + href) # save it to a list or return 

# call the initial root web folder
RecurseLinks('http://somesite-xyx.com.com/directory-browsing/')
于 2013-03-06T07:46:51.697 に答える