2011-12-19 5 views
2

私はpythonを使って、RSSアグリゲーターと同じように機能するアプリケーションをビルドしています。私はこれを行うためにフィードパーサライブラリを使用しています。しかし、私は、新しいコンテンツがあるかどうかをプログラムが正確に検出するように苦労しています。フィードパーサーで新しいコンテンツのRSSフィードを確認する

私は主にニュース関連のフィードに関係しています。新しいアイテムがフィードに追加されているかどうかを確認するだけでなく、以前の記事が更新されているかどうかを検出できるようにしたい。誰かが、これを行うために私がどのようにfeedparserを使うことができるかを知っていますか?唯一の義務的な項目要素はタイトルか説明のどちらかです。私は、リンク要素が常に存在すると想定するつもりです。

各項目に関連付けられたフィードパーサーの「id」属性は記事のリンクにすぎないので、フィードの新しい記事を検出するのに役立ちますが、以前の記事の更新を検出するのには役立ちます変更されていません。

私はstackoverflowの以前のスレッドを見てきましたが、コンテンツやハッシュのタイトル+ URLをハッシュすることを提案している人がいましたが、それがどういう意味か、アプローチ)。

答えて

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について知りたい場合があります。

+0

優れています。有難うございます。私が今行っている問題は、同じコンテンツを読むたびに異なるハッシュ値を取得し続けるということです。 私はこのようなコンテンツを取得:。 'コンテンツ= urllib.urlopen(項目[0] [ "リンク"])(リード)' と、私は、ハッシュ値を計算します。上記のように2回目に同じコンテンツを読み込んだ場合、今回は別のハッシュ値を取得します。これはコンテンツが同じである必要があるため発生しません。どのように私はこれを防ぐことができますか? – user1106610

+1

多くの理由から、完全なWebページが負荷ごとに異なる可能性があります。たとえば、定期的に更新されるサイドバーに含まれる新しい記事のリストがあるかもしれません。それは「コンテンツ」の定義に帰着します。あなたはページのHTMLを掘り下げ、記事本体を見つけてそれをあなたのコンテンツとして使う必要があります。 –

関連する問題