递归搜索网站上的文件w/目录浏览



是否有一种方法来定位,如果一个文件或目录存在于web服务器与http目录浏览?我有一个网站,其中包含了一些文件和目录。我想遍历目录,找到一个给定的文件,它可以位于子目录的任何地方。通常,我们可以在文件系统上使用os.path.isfile("file_name")来实现这一点,但这不适用于HTTP上的目录浏览。我们怎么能做到呢?

在网络上这样做并不像在文件系统上那样简单。首先,根据不同的网络服务器,文件夹列表会有所不同。所以你必须知道列表是如何格式化的。例如,我注意到大多数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/')

相关内容

  • 没有找到相关文章

最新更新