この問題をどのように解決しますか?
あなたはブログのHTMLをスクレイピングしています。ブログのHTMLの一部はブログ投稿であり、一部は書式設定、サイドバーなどです。HTML内のどのテキストがどの投稿に属しているか(つまり、パーマリンク)を識別できるようにする必要があります。
私はあなたが何を考えているか知っています:あなたはただRSSを見て、HTMLを完全に無視することができます!ただし、RSSには非常に短い抜粋しか含まれていないか、興味のあるリンクが削除されていることがよくあります。同じページのHTMLとRSSを一緒に使用して、RSSの抜粋を本質的に無効にします。
RSSエントリは次のようになります。
タイトル ポストボディの抜粋 パーマリンク
HTMLのブログ投稿は次のようになります。
タイトル(パーマリンクで囲まれているかもしれません) ..。 パーマリンク、多分 ..。 ポストボディ ..。 パーマリンク、多分
したがって、HTMLページには同じフィールドが含まれますが、パーマリンクの配置は事前にわかりません。フィールドは、ほとんどがHTMLと空白であるノイズテキストで区切られますが、「投稿者Johnny」などの追加のメタデータも含まれる可能性があります。 "または日付またはそのようなもの。以下で説明するように、テキストはHTMLとRSSでわずかに異なる場合もあります。
追加のルール/警告:
- タイトルは一意でない場合があります。これはあなたが思っているよりも頻繁に起こります。私が見た例:「月曜日のまとめ」、「TGIF」など。
- タイトルは空白のままにすることもできます。
- RSSの抜粋もオプションですが、少なくとも空白以外の抜粋または空白以外のタイトルが必要であると想定しています。
- RSSの抜粋には投稿コンテンツ全体が含まれている可能性がありますが、投稿本文の先頭の短い抜粋が含まれている可能性があります
- パーマリンクは一意である必要があり、HTMLとRSSの両方で同じである必要があると想定します。
- タイトルと抜粋および投稿の本文は、RSSとHTMLでわずかに異なる形式になっている場合があります。例えば:
- RSSでは、タイトルまたは本文の内部のHTMLが削除されているか、HTMLページにHTMLが追加されているか(投稿本文の最初の文字を何かで囲むなど)、わずかに異なる形式になっている可能性があります。
- テキストは、RSSではutf8であるのに対し、HTMLでは非ASCII文字は常にアンパサンドエンコーディングを使用してエンコードされるなど、わずかに異なる方法でエンコードされる場合があります。ただし、これは非ASCII文字がまれな英語のテキストであると想定してください。
- 正しくエンコードされていないWindows-1252の恐ろしさがある可能性があります。これは、中引用符のような記号文字でよく発生します。ただし、ほとんどのテキストはASCIIであると想定しても問題ありません。
- 特にタイトルでは、どちらの方向にもケースが折りたたまれている可能性があります。したがって、HTMLページではタイトルをすべて大文字にすることはできますが、RSSではできません。
- RSSフィードとHTMLページのエントリ数は同じであるとは想定されていません。古いエントリが多かれ少なかれある可能性があります。両方に表示される投稿のみを取得することを期待できます。
- RSSは遅れる可能性があります。RSSフィードにまだ表示されていない新しいエントリがHTMLページにある可能性があります。これは、RSSがFeedburnerを介してシンジケートされている場合に発生する可能性があります。繰り返しになりますが、RSSとHTMLの両方に表示される投稿のみを解決することが期待できます。
- 投稿の本文は非常に短くても長くてもかまいません。
100%の精度は制約ではありません。ただし、精度が高いほど優れています。
さて、あなたはどうしますか?