0

Pythonスクリプトを作成しようとしています...基本的に...

私はいくつかのサイトへのURLを持っています

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"

正しい URL は次のようになります。

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

これは可能ですか?

4

2 に答える 2

1

これを実行したい場合は、次を使用しますwget

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

Python では、面倒な作業になります。

于 2013-05-04T09:10:31.413 に答える
1

ランダムな URL を推測するのは非常に難しいことは別として、有効な解決策につながる可能性のあるいくつかの仮定を使用して回答を投稿します。ここでの免責事項は、サーバーアクセスなどに関してあなたの可能性が何であるかはわかりません。そのため、ファイル名の形式やディレクトリの内容などについていくつかの仮定を立てます. サーバーにアクセスできない場合、ソリューションには実際の答えはありません。

それで、ここに行きます。まず、サーバー上のファイル名のリストを取得します。

import os
with open('filenames.txt') as f:
    files = os.listdir('.') # Assuming you are in the correct dir
    f.write('\n'.join(files))

これにより、サーバー上で使用可能なすべてのファイルが得られます。これを何度でも生成し、できれば Web サーバーにコピーして自動化し、常に最新の状態に保ってください。

次に、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 に答える