-1

私はPythonを初めて使用し、ファンシー/教育目的でWebクローラーを構築しています。再帰関数を使用していませんが、「RuntimeError:最大再帰深度を超えました」というエラーが発生します。私は本当に混乱していて、何か明らかなものを見逃している、または単に何かを誤解しているような気がします。私はどういうわけか再発していますか、それとも私の大きなループに関連している可能性がありますか?アイデアは、1万ページをクロールするまでWebをクロールすることです。

更新:

最新のコードはここにあります:http://pastebin.com/4v5GT7ft

スタックトレースはここにあります:http://pastebin.com/9GzAxZM9

私の問題は、正しくエンコードされていないURLでstr()を呼び出そうとしているようです。URLをデコードしてから、Unicodeにエンコードしようとしましたが、正常に実行できませんでした。アドバイスをいただければ幸いです。

4

1 に答える 1

2

あなたが提供したコードは実際には実行されません(すべてのimportステートメントが欠落している、インデントエラーがあるなど)。また、それを読み取るには、私たちが持っていないJETデータベースとサードパーティのモジュールが必要です。ホームディレクトリにある既存のディレクトリを使用するようにハードコーディングされています。

私はhttp://pastebin.com/rCJriEu5でそれらすべてを修正しようとしました(これにはlxmlbs4別の解析ライブラリまたはBS3を使用している場合は、その方法で試すことができます)。

そして、私がそれを実行すると、それは機能しているようです。まだエラーはなく、31.73%完了しています。ファイルの先頭でaを実行してもsys.setrecusionlimit(50)、機能しているようです(これまでのところ、3.67%完了しています)。

ですから、あなたのコードのどこが悪いのかは、明らかにあなたが私たちに見せていないコードにあります。

于 2013-02-26T19:33:41.497 に答える