3

初めてApache Nutchを使用しています。クロール後にデータを MySQL データベースに保存するにはどうすればよいですか? 他の Web アプリケーションで簡単にデータを使用できるようにしたい。

関連する質問を見つけましたが、コード ID のどの部分が MySQL コネクタに置き換えられるのか明確にわかりません。短いコード例を手伝ってください。

4

3 に答える 3

3

http://mirror.nyi.net/apache//nutch/apache-nutch-1.2-src.zipからソースを入手

org.apache.nutch.crawl.Crawlエディターでクラスを開きます 。

ルックアップ変数Path crawlDb = new Path(dir + "/crawldb");

CustomMySQLCrawl変数は、独自のクラスを取得するためにコードを置き換える場所に関するヒントを提供します。

この呼び出し中に永続化が行われcrawlDbTool.update(crawlDb, segs, true, true); // update crawldbます。データベースに保存する必要がある場所があります。この時点で hibernate の統合を検討することをお勧めします。

于 2011-01-12T21:34:05.640 に答える
1

クロール ジョブの最後に Nutch によって作成された Lucene インデックスからコンテンツを取得するか (Nutch 2.0 で削除されたと思います)、反復ごとにセグメントからデータを取得します。

Lucene インデックスに入れられたもので十分な場合は、その方が簡単かもしれません。しかし、さらに必要な場合は、各セグメントに Nutch によってフェッチされたすべてが含まれます。

于 2011-01-24T21:13:26.387 に答える
1

Nutch のバイナリ実行ファイルを使用する場合は、クロール後に -readseg コマンドを実行します。生のhtmlやその他の情報がすべて含まれる巨大なファイルが作成されます。その後、必要なデータを解析してデータベースに保存できます。

Eclipse で Nutch を実行する場合は、Fetcher クラスにコードを追加する必要があります。

pstatus = output(fit.url, fit.datum, content, status, CrawlDatum.STATUS_FETCH_SUCCESS);
updateStatus(content.getContent().length);

Fetcher クラスのこれらの行の後に、単純な呼び出しとデータベース コードへの書き込みを記述します。次の方法で生のhtmlを取得できます。

content.getContent();

これは、html ファイルのバイト配列表現を返し、文字列に変換してデータベースに保存します。文字エンコーディングに苦しむ可能性があります: Nutch を UTF-8で設定して Nutch を設定します。ただし、問題は一般的に Eclipse のエンコーディングによって発生します。それを克服するには、「charset」値を含むコンテンツの部分文字列を取得し、次のようにします。

String yourContent = new String(content.getContent, encodingYouFound);

ここでの「encoding」は文字列なので、「content」から取得すれば十分です。それができない場合、一部のサイトには charset 属性がない可能性があります。UTF-8 などの一般的なエンコーディングを使用してください。

于 2012-05-06T01:15:33.350 に答える