根据已知信息构建未知URL

时间:2013-05-04 04:26:37

标签: python url

我正在尝试创建一个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"

这甚至可能吗?

2 个答案:

答案 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中,这将是一项繁琐的练习。