10

定義方法はわかりませんが、基本的には、特定の URL から関連する画像とテキストの要約を取得したいと考えています。

たとえば、ユーザーが Facebook の共有ボックスへのリンクを貼り付けると、記事のタイトルや記事自体からの短いテキスト ブロック、および関連する画像がすぐに取得されます。サイトのロゴや記事自体のテキストなど、間違った画像を取得することはありません...

Google+ やその他のソーシャル ネットワークやサービスについても同様です。

以下のコードを使用してページのコンテンツを読む必要があると想定して始めました。どの画像が (記事本文から) 関連する画像で、どのテキストが記事のテキストであるかをどのように判断できますか?

URL oracle = new URL("http://www.oracle.com/");
BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream()));

String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);

in.close();

もちろん、ここでコードを求めているわけではありません (たとえば、誰かがスニペットを持っていて、喜んで共有する場合を除きます) が、これにアプローチする方法についても... どこから始めればよいでしょうか?

どんな助けでも大歓迎です!

4

1 に答える 1

9

生のテキスト抽出にはBoilerpipeをお勧めします。高度なアルゴリズムを使用して、関連するテキストを検索し、その周囲の定型文 (メニュー、フッターなど) を削除します。

画像に関しては、コメントで既に提案されているメタ タグを使用する以外に、html パーサー ( htmlparser など) を使用してすべての「img」タグを抽出し、いくつかのヒューリスティックを使用して最適なものを選択できます。私は次のようないくつかのヒューリスティックを使用しています:

  • 30 ピクセル未満の画像は使用できません。通常はアイコンまたは広告追跡画像です
  • 2乗するほど良く、これにより定規や同様のものを回避できます
  • 標準的な既知のバナー サイズはありません
  • ページの上位にあるほど良い
  • Boilerplate によって抽出された内容に近い (これは難しい)

私はこれらのヒューリスティックを本番環境でページのスクレイピングにしばらく使用してきましたが、良い結果が得られました。

ただし、これらのルールを適切に適用するには、画像をダウンロードしてサイズを取得したり、スタイル属性を解析したりする必要がある場合があります。

このサーバー側をページ スクレイピング サービスとして実行する予定であれば、問題ありません。Android デバイスでオンザフライで実行することを計画している場合は、重すぎる可能性があります。

于 2012-07-24T18:21:09.783 に答える