2012-05-12 12 views
4

DOMのような標準的な方法があり、HTMLページを選択的に解析することができますが、解析対象のメインテキストがどこにあるのかを検出することができますか?クローラはどのようにウェブページからテキストを解析しますか?

キーワードをキャプチャするために分析されるメインテキストは、メニュー、サイドバー、フッターなどと混在しています。クローラがメニューやサイド部分からキーワードをスキップする方法を教えてください。

私は、さまざまなHTMLページからキーワードを取得するための小さなPHPプロジェクトに取り組んでおり、サイドコンテンツからキャプチャされたキーワードを避ける方法はわかりません。誰かがHTMLページ内の他の人とメインのコンテンツを区別する方法を説明したり、少なくとも私にヒントを与えることができますか?

+0

私は検索結果について話していません。たとえば、現在のページを解析するとき、メインテキストが私の質問とその答えであることを認識する方法。サイドバー、関連する質問、メニュー、StackOverflowのメモなどのリストではありません。私は、クローラの作成方法を制御する方法ではなく、クローラを作成する方法について話しています。 – Googlebot

+0

[Readability project](http://arc90.com/work/readability/)を見て、それはPHPとPython –

答えて

2

通常、サイドバー、メニュー、およびフッターは、サイト全体の各ページで繰り返されます。実際のコンテンツは一般に各ページに固有のものです。実際のコンテンツを区別するためのガイドとして使用できます。

クローラは、ページ上のテキストをコンテンツとして分析するための複雑なアルゴリズムを使用して、コンテンツの重さを判断し、シークレットを共有しない傾向があります。

クローラ開発者は、迅速かつ簡単な方法はありません。クローラ開発者は独自の革新的な方法を考え出し、それらをまとめてページのコンテンツの全体像を取得する必要があります。

+0

に移植されました。クローラー技術は本当に先進的かつ複雑ですが、中小規模のクローラーにもいくつかのトリックが必要です。 – Googlebot

0

コンテンツがテキストの場合、ページの主なコンテンツは単語密度が比較的高い場所であるとみなすことができます。

これは、検索エンジンに関連するページの主なコンテンツを意味します。ページの主な内容は、主にdivで、p、em、bなどのタグを含むリテラルの数です。基本的にはテキストの書式設定のためのもので、しきい値以上または以上です。

私は

は、Webページで使用されるすべてのタグを取得するには、次の論理でオフを開始するものとします。

リテラルとp、em、b、li、ulのような書式設定タグとアンカータグのみでコンテンツが構成されているdom要素を書き留めておきます。

私はアンカータグだけを含むdivを残し、ナビゲーション目的のものと仮定します。

これらのうち、数値が特定のしきい値を超えるdom要素を選択しました。

この閾値は、ウェブサイトからあなたが平均として取ることができるウェブサイトに変わる(div要素で見つかったリテラルは、特定のURL構造のサイトのすべてのページにわたって最高のリテラルを持つ)

アルゴリズムが中に学習していますそのコース。

+0

キーワード密度ではなく、単語密度 –

+0

申し訳ありませんが、それは誤植でした。私は '単語密度'を意味しました。 htmlタグのプールで単語密度を測定する方法は? – Googlebot

関連する問題