0

基本的なフォルダシステムがあり、フォルダにキーワードがラベル付けされているWebサイトをスクレイプする必要があります。一部のフォルダにはテキストファイルが含まれています。すべてのページ(フォルダー)をスキャンして、新しいフォルダーへのリンクを確認し、キーワードとファイルを記録する必要があります。私の主な問題は、より抽象的なものです。ネストされたフォルダと不明な「深さ」を持つディレクトリがある場合、それらすべてを反復処理するための最もpythoncな方法は何ですか。[「深さ」がわかっている場合、それは本当に単純なforループになります)。アイデアは大いに応用されました。

4

2 に答える 2

2

通常、再帰が最も簡単な方法です。

ただし、誰かが自分自身または親へのシンボリックリンクを持つディレクトリを作成した場合、しばらくするとStackOverflowErrorが発生する可能性があります。

于 2012-05-12T09:09:28.173 に答える
2

これが簡単なスパイダーアルゴリズムです。処理されるドキュメントとすでに処理されたドキュメントのセットに両端キューを使用します。

active = deque()
seen = set()

active.append(first document)

while active is not empty:
    document = active.popleft()
    if document in seen:
        continue

    # do stuff with the document -- e.g. index keywords

    seen.add(document)
    for each link in the document:
         active.append(link)

これは反復的であり、任意の深い木で機能する可能性があることに注意してください。

于 2012-05-12T09:34:08.230 に答える