2011-02-07 22 views
2

何分もの間隔でPythonスクリプトを実行したい。スクリプトは、rssフィードから最新の記事を取得することから始まります(フィードパーサーを使用)。私が望むのは、最新の記事が最後に実行されたときと同じで、スクリプトが終了するときです。これをどのように達成するのですか?RSSフィードが変更されていない場合は何もしない

答えて

4

あなたはPythonの質問にfeedparserに言及しているのでyesの場合、これを実行する最も簡単な方法は、サーバーが、以来、唯一の要求の更新のための仕事の大半を行う作る場合には、私はあなたがfeedparser.org

を意味すると仮定します最後に行った変更:ETag and Last-Modified headers for RSS feeds

+1

これは良いアイデアのようですね、ありがとう。私は実際にそれを使用するために動作することはできませんドキュメントのベースでは、例を提供することができますか? – HankSmackHood

+0

上記リンクの例は、どのように使用されるべきかを指定します。初めて呼び出すと、urlだけを解析メソッドに渡します。データが返された後、そのRSSフィードのetagと変更されたデータを覚えたり保存したりします。その後のRSSフィードの取得では、解析メソッド呼び出しの一部としてetagと変更されたデータを渡します。 –

+0

+1から最終変更 - 移動する必要のないビットは移動しないでください。 – bgporter

3

一時ファイルに状態を保存することができます。例えば。テンポラリファイルがない場合は、テンポラリファイルにタイトルを書き込み、次回にファイルから読み込み、読み込んだタイトルと新しいタイトルを比較します。

+3

記事が編集され、異なる内容が含まれている場合には、 'updated'日付も保存することをお勧めします。 –

+0

うん、これはそれを行う方法です。それを構造体に書き出すだけです。 JSONまたはPickleを使用して、より簡単に読み込めるデータ構造として書き出すことを検討することができます。 – chmullig

0

さまざまなアプローチがあります。最も簡単なのはおそらく、あなたのプログラムが扱うフィードごとに取得した最新の記事の一意のキーまたはハッシュを保持することです。これは、記事タイトル&の日付、または記事全体の内容のmd5sumの組合せであってもよい。

このデータをスクリプトのXML状態ファイルに書き込むか、cpickleのようなものを使用してデータを保存します。次に、プログラムが実行されるたびに、最新のフィード記事のみを取得します(前回の記事ハッシュと最後の記事ハッシュをそれぞれチェックします)。

もちろん、スクリプトが終了する前に最新の記事フィードハッシュを更新することを忘れないでください。

スクリプトで複数のフィードを処理する場合は、フィードごとにこれらの「最新の記事ハッシュ」アイテムの1つを保存する必要があります。

関連する問題