3

私はHTMLタグについて話しているのではなく、このサイトのブログ投稿、YouTubeビデオ、または質問を説明するために使用されるタグです。

1つのWebサイトだけをクロールしている場合は、xpathを使用してタグを抽出するか、単純な場合は正規表現を使用します。しかし、extract_tags()関数で任意のWebページをスローして、タグをリストできるようにしたいと思います。

idまたは'tag'のクラスを持つすべてのHTML要素を検索するなど、いくつかの単純なヒューリスティックを使用することを想像できます。ただし、これはかなり脆弱であり、膨大な数のWebページでは失敗する可能性があります。この問題に対してどのようなアプローチをお勧めしますか?

また、ZemantaとOpen Calaisはどちらもテキストのタグを推測する方法があることを知っていますが、それは実際の人間がすでに選択したタグを抽出することと実際には同じではありません。ただし、ドキュメント内のタグを推測するための他のサービス/APIについては、ぜひ聞いてみたいと思います。

編集:明確にするために、これのためにすでに機能している解決策は素晴らしいでしょう。しかし、これをすでに行っているオープンソースソフトウェアはないと思います。そのため、ほとんどの場合に有効なアプローチについて、人々から聞いてみたいと思います。完璧である必要はありません。

EDIT2:通常は機能する一般的な解決策を提案している人、およびWebサイト/エンジンごとにカスタムスクレーパーを作成する必要がある場合は、arc90可読性ツールを検討してください。このツールは、私が信じるある種のヒューリスティックアルゴリズムを使用して、Web上の任意の記事の記事テキストを驚くほど正確に抽出することができます。私はまだ彼らのアプローチを掘り下げていませんが、それはブックマークレットに収まり、あまり関与していないようです。記事の抽出はタグの抽出よりもおそらく簡単であることを理解していますが、それは可能なことの例として役立つはずです。

4

8 に答える 8

2

あなたが提供するarc90の例のようなシステムは、タグ/テキストの比率やその他のヒューリスティックなどを調べることで機能します。ページのテキスト コンテンツと周囲の広告/メニューなどの間には十分な違いがあります。他の例には、メールやアドレスをスクレイピングするツールが含まれます。ここには、検出できるパターン、認識できる場所があります。タグの場合、タグを通常のテキストと一意に区別するのに役立つものはあまりありませんが、他のテキストと同様に単語またはフレーズにすぎません。サイドバーのタグのリストは、ナビゲーション メニューと区別するのが非常に困難です。

tumblr などの一部のブログには、URL に「タグ付き」という単語が含まれているタグがあり、使用できます。同様に、Wordpress にも「.../tag/...」タイプのタグの URL があります。このようなソリューションは、個々のページ レイアウトに関係なく、多数のブログで機能しますが、どこでも機能するとは限りません。

于 2010-09-17T19:23:13.623 に答える
1

ソースがデータをフィード(RSS / Atom)として公開している場合は、この構造化データからタグ(またはラベル/カテゴリ/トピックなど)を取得できる可能性があります。

別のオプションは、各Webページを解析し、 rel =tagmicroformatに従ってフォーマットされたタグを探すことです。

于 2010-09-06T11:26:32.473 に答える
0

くそー、ちょうどオープンカレーを提案しようとしていた。これを行うための「優れた」方法はありません。いくつかのターゲットプラットフォームを念頭に置いている場合は、Wordpressをスニッフィングしてから、それらのリンク構造を確認し、Flickrをもう一度確認することができます...

于 2010-09-04T05:53:21.987 に答える
0

よく知られた、従った仕様がないため、これは不可能です。同じエンジンの異なるバージョンでも、異なる出力が作成される可能性があります。Wordpress を使用すると、ユーザーは独自のマークアップを作成できます。

このようなことを行うことに本当に興味がある場合は、リアルタイムで進行中のプロジェクトになることを知っておく必要があります。ページで使用されている「エンジン」を検出する lib を作成し、解析します。それ。何らかの理由でページを検出できない場合は、新しいルールを作成して解析し、先に進みます。

これがあなたが求めている答えではないことはわかっていますが、別の選択肢が本当に見つかりません。私は Python が好きなので、スクレイピングの完全なフレームワークであるScrapyを使用します。完全で、十分に文書化されており、非常に拡張可能です。

于 2010-09-16T01:54:25.020 に答える
0

Drupal には用語抽出モジュールがあります。( http://drupal.org/project/extractor ) ただし、これは Drupal 6 専用です。

于 2013-02-19T23:47:42.840 に答える
0

arc90 を見ると、パブリッシャーに意味的に意味のあるマークアップを使用するよう求めているようにも見えます [https://www.readability.com/publishers/guidelines/#view-exampleGuidelines を参照]。 @dunelmtech が推奨するタグ/テキスト比率などの一般的なルールを開発しており、記事の検出に使用できるか、TextTiler や C99 などのテキスト セグメンテーション アルゴリズム (自然言語処理分野から) を組み合わせて使用​​している可能性があります。記事の検出に非常に役立つ可能性があります - http://morphadorner.northwestern.edu/morphadorner/textsegmenter/と google を参照してください [学術文献に掲載 - グーグル学者]。

ただし、必要に応じて「タグ」を検出することは難しい問題のようです (上記のコメントで既に述べた理由により)。私が試すアプローチの 1 つは、テキスト セグメンテーション (C99 または TextTiler) アルゴリズムの 1 つを使用して記事の開始/終了を検出し、..tag.. を含む CLASS & ID 属性を持つ DIV / SPAN / UL を探すことです。 、ページ レイアウトのタグに関しては、一般的に記事の下とコメント フィードのすぐ上にある傾向があるため、これは驚くほどうまく機能する可能性があります。

とにかく、タグ検出でどこかに到達したかどうかを確認するのは興味深いでしょう. マーティン

編集:本当に役立つかもしれないものを見つけました。このアルゴリズムは VIPS [http://www.zjucadcg.cn/dengcai/VIPS/VIPS.html を参照] と呼ばれ、Vision Based Page Segmentation の略です。これは、ページのコンテンツを視覚的にセクションに分割できるという考えに基づいています。DOM ベースの方法と比較して、VIPS によって取得されたセグメントは、より意味的に集約されています。ナビゲーション、広告、装飾などのノイズの多い情報は、ページの特定の位置に配置されることが多いため、簡単に削除できます。これは、タグ ブロックを非常に正確に検出するのに役立ちます。

于 2011-04-03T19:37:16.390 に答える
0

唯一の選択肢は、各サイトのカスタム スクリプトを作成することだと思います。AlchemyApi を見ることができますが、物事を簡単にするために。OpenCalais と同様のエンティティ抽出機能を備えていますが、単純な視覚的制約を使用して Web ページの一部を識別することにより、xpath を記述するよりもはるかに簡単な「構造化コンテンツ スクレイピング」製品も備えています。

于 2010-09-14T18:45:32.287 に答える
0

Yahoo パイプを作成し、Term Extractor モジュールを介してソース ページを実行してみてください。素晴らしい結果が得られる場合とそうでない場合がありますが、試してみる価値はあります。注 - V2 エンジンを有効にします。

于 2010-09-16T07:01:31.967 に答える