1

アプリケーションが Google App Engine でホストされ、Jsoup html 解析ライブラリを使用するプロジェクトに取り組んでいます。私のアプリケーションでは、デフォルトの queueu で TaskQueues を使用しています。そのキュー内の唯一のタスクは、URL に接続してページの解析を開始することです。ログ ファイルにエラーや警告は表示されません。ドキュメントを解析する Jsoup の行が表示されないため、ログ ファイルは終了します。ここに私のコードのスニペットがあります:

log.warning("Before connection");
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
log.warning("After connection");

TaskQueue は問題なく動作します。私はテストしましたが、問題がないことを 100% 確信しています。手動で Web ページに接続してダウンロードし、Jsoup に渡してそこで解析を開始しようとしましたが、接続は正常に機能し、Web ページは正常にダウンロードされましたが、Jsoup は何もできませんでした。私の最大の問題は、ログ ファイルにエラーも警告も記録されていないことです。だから何が起こっているのかわからない。

4

2 に答える 2

0

App Engine はいくつかのクラスを制限します。Jsoup.connect(url) または .parse メソッドのいずれかがこれらの制限されたクラスの 1 つに依存し、例外をスローすると仮定します。

Jsoup.connect が問題を引き起こす可能性を排除するには、App Engine URL Fetchを使用して URL でページの文字列を取得し、次を使用することをお勧めします。

Document doc = Jsoup.parse(htmlString);

ただし、解析に問題がある場合は、エラー/ログを機能させる必要があり、何かを提案できる情報はまだ多くありません。問題のあるコードを try-catch ブロックに入れて、例外をキャッチできるかどうかを確認してください。

さらに、新しいバージョンの GAE SDK を試してください (1.8.1 が現在のバージョンです)。私は以前、Jsoup に干渉する GAE SDK の checkRestricted メソッドと競合していたので、1.7.5 の場合はそうかもしれません。

于 2013-06-24T15:47:40.210 に答える