0

我正在尝试创建一个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”的 url?

我知道的...

correctURL = "http://www.somesite.com/foo/bar/2-*****.jpg"

正确的网址是:

"http://www.somesite.com/foo/bar/2-123.jpg"

这甚至可能吗?

4

2 回答 2

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 时运行它。

最后一步是构造 url,如下所示:

n = 2 # The number you got somewhere
fmt = 'http://www.somesite.com/foo/bar/{}-{}'
url = fmt.format(n, d[n])
于 2013-05-04T08:49:39.653 回答
1

如果您想完成此操作,请使用wget

wget -r -|1 --no-parent -A.jpg http://www.somesie.com/foo/bar/

在 Python 中,这将是一个繁琐的练习。

于 2013-05-04T09:10:31.413 回答