1

Crawler4j の最新バージョンを使用して、いくつかのフィード URL をクロールしています。ドキュメント ID とともにいくつかのシード URL を渡しました。また、そのページのコンテンツのみが必要なため、深さをゼロに設定しました。

問題は、これらのシード URL の parentdocid と親 URL を取得できないことです。元の URL に関連付けられているリダイレクトされた URL を知りたいです。

page.getWebURL().getParentUrl();親URLを取得するために使用しています。

例: http://telegraph.feedsportal.com/c/32726/f/568297/s/18b0dd9a/l/0L0Stelegraph0O0Cculture0Cmusic0Cmusic0Enews0C87789850CNeil0EYoung0Eto0Erelease0Eautobiography0Bhtml/story01.htmおよびドキュメント ID 10

詳細な説明についてはhttp://code.google.com/p/crawler4j/issues/detail?id=163

誰かが同様の問題を抱えていますか?

別の URL で再試行しましたが、結果は同じでした。controller.addSeed("feeds.reuters.com/~r/reuters/bankruptcyNews/~3/es0kEUT8gI0/",321);

出力: -

ParentDocId 0 DocID 322 親ページ null

UPDATE:--------

私はcrawler4jコードを調べて、一時的に問題を修正しました。

-------- PageFetcher.java ---------

if (header != null) {

String movedToUrl = header.getValue();
movedToUrl = URLCanonicalizer.getCanonicalURL(movedToUrl, toFetchURL);
fetchResult.setMovedToUrl(movedToUrl);                                                            
webUrl.setParentUrl(webUrl.getURL()); //My Custom Code to add Parent URL.
/*This won't work due to collision with next            
document ID which needs to be unique.
webUrl.setParentDocid(webUrl.getDocid());*/

}
4

1 に答える 1

1

これは古い質問であることは知っていますが、最近同じ問題を扱っていたので、他の人が解決策を探しに来た場合に備えて、解決策を掲載することにしました。

基本的に、リダイレクト ページに設定されるparentURLとparentDocIdは、元のページのURLとDocIdではなく、元のページのparentURLとparentDocIdに設定されます。

これは、parentURL と parentDocId が、リダイレクト元のページではなく、現在のページのリンク元のページを表すと想定されているためです。

通常、この動作を変更すると、いくつかの問題が発生する可能性がありますが、今回のケースでは、1 つのページのみをクロールし、ページからのリンクを介して長い深度検索を実行していないため、parentDocId と parentURL が使用されることはありません。

この情報を念頭に置いて、解決策を見つけることができました。

WebCrawlerのメソッドをオーバーライドしてhandlePageStatusCode()、次の行を追加するだけです。

if (webUrl.getParentUrl() == null) {
     webUrl.setParentUrl(webUrl.getURL());
}

このコードでは、新しいページが処理parentUrlされるたびに、最初は に設定されnullますが、現在のページの URL に設定されます。前述のように、リダイレクト ページがキューに追加されると、リダイレクト元のページparentUrlに設定されparentUrlます。したがって、リダイレクト ページが処理さparentUrlれると、 はすでに設定されているため、変更されません。

メソッドまたはその他の場所でページを処理すると、ページvisit()の から元の URL を抽出できるようにparentUrlなりますWebUrl

この情報が誰かの役に立てば幸いです!

于 2013-07-09T02:48:33.533 に答える