データベースと RSS フィードがあるとします。まだデータベースにない、RSS フィードからの新しいデータを見つけなければなりません。この問題にどのようにアプローチしますか?
5 に答える
RSS アイテムごとにハッシュコードまたは一意の識別子を生成し、それをデータベースに保存するのはどうですか? 次に、新しい RSS の各項目のハッシュコードを生成し、データベースと照合します。
まず、各アイテムを一意に識別する必要があります。guid
この要素を使用するサイトと使用しないサイトがあり、要素が変更されないアイテムと変更されるアイテムがあるため、これは問題ですlink
。一般的な経験則は、アイテムに があるguid
場合はそれをキーとして使用し、そうでない場合は をキーとして使用してlink
希望することだと思います。
アイテムのキーを確立したら、(おそらく)pubDate
要素を調べることで、見ているアイテムが更新されたかどうかを判断できます。これは、ストーリーが更新された場合に更新される必要があります。
このアプローチはほとんどの場合を処理しますが、RSS に関連するすべての場合と同様に、フィード プロバイダーが適切に動作していないと機能しなくなります。
ほとんどの RSS フィードには、各記事の日付があります。したがって、データベースから最新の記事の日付を取得するクエリを作成し、RSS フィードからすべての最新の記事を取得して、日付を比較します。
また、これが 1 つの特定のフィード用であるか、または多くのフィードで機能するものを作成しているかによっても異なります。すべてのフィードで機能すると思われる場合は、いずれかのハッシュ方法を使用してください。タイトルと日付のハッシュを作成し、これを一意の識別子として使用します。
RSS フィード内の特定のアイテムの一意のフィールドから取得します。次に、そのアイテムがすでにデータベースにあるかどうかを確認します。このロジックをループで実行します。
手に負えない、いくつかの提案:
- フィード内の各アイテムに対してチェックサムを実行し、結果をデータベースに保存します。データベース内の結果を、RSS ソースからの新しいファイル/ストリームごとに比較します。
- タイトルをハッシュします。各アイテムの日付と時刻をデータベースに保存します。更新された各 RSS ストリームと比較します。