私はPythonで小さなスパイダーを書いています。ページをヒットし、パターンに従ってページ上のすべてのリンクを取得し、それらのページのそれぞれに行き、繰り返します。これを再帰呼び出しにラップする方法
何とか再帰的にする必要があります。以下のURLパターンは、次のとおりです。
www.example.com
その後、私は、私はそれぞれのページをご覧ください正規表現に基づいて、すべてのリンクを取得します。
再帰部分:
www.example.com/category/1_234
(基本的には同じURL:このページのようなリンクが含まれている場合
今www.example.com/category/1
:
は、私のようなURLでページを訪問していますと言います追加の "_234234"を除いて)
私はそのページにアクセスして、次のようなURLを確認してください:
www.example.com/category/1_234_4232
(再び、同じURLに加えて、アンダースコアおよび番号)
このパターンを当てはめるこれ以上のリンクが存在しなくなるまで、私はこれをやり続けます。
1. visit a category page
2. does it contain links with the same url + "_dddd" if yes, visit that page
3. back to #2 unless no links
私は正規表現を必要としません。私は再帰呼び出しを構造化するのに助けが必要です。
'visited'リンクが訪問された意味シンプルな存在で設定することができます:あなたは、再帰と同じように同じ順序をこする心配している場合 - リスト - またはスタックを使用しています。最後の行の 'visit_next'のリストは、' add'ではなく 'append'を必要とします。 – eumiro
スレッドのような再帰は、ジョブにとって適切なツールである場合には使い勝手が良いですが、ジョブにとって常に適切なツールではありません。これは良い解決策です。 –
@eumiroが正しいとすると、偽の値を持つ辞書の代わりに集合を使用するべきです。そして 'visit_next'をスタックとして使うつもりなら、最初の要素(普通の' .pop'、これはデフォルト)の代わりに最後の要素をポップします。 – delnan