22

ブログ投稿でうまく機能する一般化された HTML パーサーを作成しようとしています。パーサーを特定のエントリの URL に向けて、投稿自体のクリーンなテキストを取得したいと考えています。私の基本的なアプローチ (Python から) は、BeautifulSoup と Urllib2 の組み合わせを使用することでした。これは問題ありませんが、ブログ エントリの適切なタグを知っていることを前提としています。誰もがより良いアイデアを持っていますか?

誰かが拡張できるかもしれないいくつかの考えがありますが、実装するのに十分な知識/ノウハウがまだありません。

  1. Unix プログラム 'lynx' は、ブログの投稿を特にうまく解析しているようです。彼らはどのパーサーを使用していますか?

  2. ジャンク広告などを自動的に削除するサービス/パーサーはありますか?

  3. この場合、ブログ投稿は通常、class="entry" などの特定の定義タグに含まれているという前提で問題ないかもしれないという漠然とした考えを持っていました。したがって、それらの間に最もきれいなテキストがある囲みタグを見つけるアルゴリズムを作成することが可能かもしれません-これに関するアイデアはありますか?

ありがとう!

4

2 に答える 2

24

男の子、私はあなたにぴったりの解決策を持っていますか。

Arc90 の可読性アルゴリズムはまさにこれを行います。HTML コンテンツを指定すると、ヘッダー、フッター、ナビゲーションなどを無視して、メインのブログ投稿テキストのコンテンツを選択します。

実装は次のとおりです。

数日以内に CPAN への Perl ポートをリリースする予定です。終わり。

お役に立てれば!

于 2009-07-18T08:26:34.613 に答える
3

特定のページの「ノイズ」を除外することを特に検討しているプロジェクトがあります。通常、これを行う方法は、特定のタイプのページのいくつかの例をアルゴリズムに与えることであり、それらの間で変更されていない部分を調べることができます。そうは言っても、解析したいすべてのブログのいくつかのサンプルページ/投稿をアルゴリズムに与える必要があります。これは通常、クロールするサイトのセットが小さく定義されている場合 (ニュース サイトなど) にうまく機能します。アルゴリズムは基本的に、HTML で使用されているテンプレートを検出し、興味深い部分を選び出します。ここには魔法はありません。タフで不完全です。

このアルゴリズムの好例は、オープンソース化された EveryBlock.com のソース コードにあります。everyblock.com/codeにアクセスして「ebdata」パッケージをダウンロードし、「templatemaker」モジュールを確認してください。

明白なことを述べるつもりはありませんが、問題のブログの RSS を使用することだけを考えたことはありますか? 通常、フィールドには、ブログの投稿全体、タイトル、その他のメタ情報が含まれています。RSS の使用は、前述のソリューションよりもはるかに簡単になります。

于 2009-07-18T08:19:19.480 に答える