检索位于URL的文件列表,其文件名与已知模式匹配

时间:2016-09-29 20:38:27

标签: python beautifulsoup urllib2

有一个网址,其中一位同事设置了大量文件供我下载,

url = "http://www.some.url.edu/some/dirname/"

在这个目录中,有大量具有不同文件名模式的文件,我事先已知,例如“subvol1_file1.tar.gz”,“subvol1_file2.tar.gz”等。我要去使用fnmatch根据文件名模式选择性地下载这些文件。

我需要的是位于 dirname 中的所有文件名的简单列表或生成器。是否有一种简单的方法可以使用,例如,BeautifulSoup或urllib2来检索这样的列表?

一旦我有了list / iterable,我们称之为 filename_sequence ,我打算使用以下伪代码下载带有模式 filepat 的文件:

filename_sequence = code_needed
filepat = "*my.pattern*"
import os, fnmatch
for basename in fnmatch.filter(filename_sequence, filepat):
    os.system("wget "+os.path.join(url, basename))

1 个答案:

答案 0 :(得分:0)

不确定这适用于您的情况,但您可以在href属性值上应用正则表达式模式:

import re

pattern = re.compile(r"subvol1_file\d+\.tar\.gz")
links = [a["href"] for a in soup.find_all("a", href=pattern)]