2

100 万の URL のステータス (http 応答) コードを見つけるために、crawler4j を実行しています。処理する URL を除外するフィルターを設定していません。
90% の URL に対して適切な応答が得られますが、出力に 10% がありません。
Webcrawler 拡張クラスの handlePageStatusCode() メソッドにも表示されません。おそらく、さまざまな問題のために処理されていません。
不足している URL を見つけて再処理することはできますか? URL を見逃さないようにクロール プロセスを改善できますか?

4

1 に答える 1

1

はい、あります!

さまざまな種類の例外をキャッチするためのメソッドを多数追加したため、Crawler4j の最新バージョンを使用してください。

WebCrawler を拡張するときは、オーバーライドできる多くのメソッドをオーバーライドするだけです: https://github.com/yasserg/crawler4j/blob/master/src/main/java/edu/uci/ics/crawler4j/crawler/WebCrawler。ジャワ

たとえば、次のように: onPageBiggerThanMaxSize onUnexpectedStatusCode onContentFetchError onUnhandledException など。

これらのメソッドが呼び出され、ページが何らかの理由で処理されなかったことに注意してください。そのため、シードとして再度追加しても問題は変わらないはずです...

とにかく、crawler4j の最新バージョンは多くのページをより適切に処理するため、v4.1 (現在) 以降にアップグレードするだけで、より多くのページをクロールできるようになります。

于 2015-08-24T14:35:49.220 に答える