2

さまざまな Web サイトからデータを取得しようとしています。スタック オーバーフローを検索した後、多くの人がこれを示唆したように、crawler4j を使用しています。以下は私の理解/設計です:

 1. Get sitemap.xml from robots.txt.
 2. If sitemap.xml is not available in robots.txt, look for sitemap.xml directly.  
 3. Now, get the list of all URL's from sitemap.xml 
 4. Now, fetch the content for all above URL's
 5. If sitemap.xml is also not available, then scan entire website.

それでは、教えてください。クローラー4Jはステップ1、2、3を実行できますか??? もっと良いデザインが利用できることを提案してください (フィードが利用できないと仮定して) もしそうなら、どうすればよいか教えてください。

ありがとうベンカット

4

2 に答える 2

3

Crawler4J はステップ 1、2、および 3 を実行できませんが、ステップ 4 および 5 では非常にうまく機能します 。サイトマップを取得するには、Http Componentsのものなどの Java HTTP クライアントを使用することをお勧めします。Java XML パーサーを使用して XML を解析し、URL をコレクションに追加します。次に、リストを使用してクローラー 4j シードを設定します。

for(String url : sitemapsUrl){
 controller.addSeed(url);
}
controller.start(YourCrawler, nbthreads);
于 2013-02-14T08:44:45.463 に答える
1

私はクローラー 4j を使用したことがないので、私の意見を大まかに言ってください。クローラーで実行できると思いますが、一部のコードを変更する必要があるようです。具体的には、 と をご覧RobotstxtParser.javaくださいHostDirectives.java。パーサーを変更してサイトマップを抽出し、ディレクティブに新しいフィールドを作成してsitemap.xml. sitemap.txt からディレクティブが返されなかった場合は、ステップ 3 をフェッチャーで実行できます。

ただし、 をチェックして何が得られるかは正確にはわかりませんsitemap.txt。特定の何かを探していない限り、これは役に立たないようです。

于 2012-02-26T16:43:21.997 に答える