我正在尝试创建一个python脚本......基本上......
我有一个网站的网址
url = "http://www.somesite.com/foo/bar/"
服务器上的文件:
1-123j.jpg
2-123.jpg
3-123d.jpg
4-1594ss.jpg
...
...
45000-457li.jpg
我知道文件名的开头(一个数字)和文件扩展名(.jpg),但是有一部分名称是未知的(一些我不知道的随机字符串)...
如果我不知道名称的123部分,如何构建“2-123.jpg”的网址?
我所知道的......
correctURL = "http://www.somesite.com/foo/bar/2-*****.jpg"
正确的网址是:
"http://www.somesite.com/foo/bar/2-123.jpg"
这甚至可能吗?
答案 0 :(得分:1)
除了提到很难猜测随机网址之外,我还会继续发布一些可能导致有效解决方案的假设的答案。这里的免责声明是我不知道你在服务器访问等方面的可能性,因此会对文件名格式或目录内容等做出一些假设。如果您没有服务器访问权限,那么您的解决方案实际上并没有真正的答案,我想。
所以,这就是。首先,获取服务器上的文件名列表:
import os
with open('filenames.txt') as f:
files = os.listdir('.') # Assuming you are in the correct dir
f.write('\n'.join(files))
这将为您提供服务器上的所有可用文件。根据需要随时生成,自动执行此操作,最好将其复制到Web服务器,以便始终保持最新状态。
然后,在您的网络服务器上,执行以下操作:
files = open('filenames.txt').read().split('\n')
d = {}
for f in files:
s = f.split('-', 1)
d[s[0]] = s[-1]
您的词典现在包含构造正确文件名所需的键/值对。您可以定期执行此操作,将结果存储在某处以便更快地访问,或者只需在构建URL时运行它。
最后一步是构建网址,如下所示:
n = 2 # The number you got somewhere
fmt = 'http://www.somesite.com/foo/bar/{}-{}'
url = fmt.format(n, d[n])
答案 1 :(得分:1)
如果您想完成此操作,请使用wget
:
wget -r -|1 --no-parent -A.jpg http://www.somesie.com/foo/bar/
在Python中,这将是一项繁琐的练习。