2

Python を使用して、RSS アグリゲーターと同様の方法で機能するアプリケーションを構築しています。これを行うには、feedparser ライブラリを使用しています。ただし、新しいコンテンツがあるかどうかをプログラムに正しく検出させるのに苦労しています。

主にニュース関連のフィードに関心があります。新しいアイテムがフィードに追加されたかどうかを確認するだけでなく、以前の記事が更新されたかどうかも検出できるようにしたいと考えています。唯一の必須項目要素はタイトルまたは説明のいずれかであることを念頭に置いて、これを行うためにフィードパーサーを使用する方法を知っている人はいますか? link 要素も常に存在すると思います。

各アイテムに関連付けられている Feedparser の「id」属性は、単に記事へのリンクのように見えるため、フィード上の新しい記事の検出には役立ちますが、以前の記事の「id」は変更されていないため、更新の検出には役立ちません。

私はstackoverflowの以前のスレッドを見てきました.コンテンツをハッシュするか、タイトル+ URLをハッシュすることを提案した人もいますが、それが何を意味するのか、どのようにそれを行うのかはよくわかりません(実際にそれが正しいアプローチである場合)。

4

1 に答える 1

4

このコンテキストでのハッシュとは、URL とタイトルの各組み合わせを表す短い値を計算することを意味します。このアプローチは、衝突 (2 つの異なるアイテムが同じ値を生成する) の可能性が低いことを保証するハッシュ関数を使用する場合に機能します。

伝統的に、MD5 はこれに適した機能でした (ただし、暗号化操作に使用しないように注意してください。その目的では推奨されていません)。

たとえば。

>>> import hashlib
>>> url = "http://www.example.com/article/001"
>>> title = "The Article's Title"
>>> id = hashlib.md5(url + title).hexdigest()
>>> print id
785cbba05a2929a9f76a06d834140439
>>> 

これにより、URL またはタイトルが変更された場合に変更される ID が提供され、新しい記事であることを示します。

記事のコンテンツへの編集も検出したい場合は、記事のコンテンツをダウンロードしてハッシュに追加できます。

ページ全体をプルダウンするつもりである場合は、HTTP conditional GET with Python帯域幅を節約し、アクセスしているサイトに少し親しみやすくするために、について学習することをお勧めします。

于 2011-12-19T20:56:13.187 に答える