13

私はPythonのfeedparserライブラリを使用して、RSSフィードからさまざまな詳細を取得しています。ニュースチャンネルのRSSフィードから25のヘッドラインタイトルを引き出したとします。1時間後、feedparserコマンドを再度実行して、25の新しいヘッドラインのタイトルの最新リストを取得します。2回目にfeedparserコマンドを実行したときに、リストが更新される場合と更新されない場合があります。

見出しのいくつかは同じかもしれませんし、いくつかは新しいかもしれません。1時間前に削除されたヘッドラインで、ニュースのヘッドラインのいずれかに更新があったかどうかを確認できる必要があります。新しいヘッドラインのみをデータベースにプッシュする必要があります。これは、重複がデータベースにダンプされないようにするためです。

コードは次のようになります。

import feedparser
d = feedparser.parse('www.news.example.xml')
for item in d.entries:
    hndlr.write(item.title)  #data being dumped into a database

上記のコードを1時間ごとに実行し、見出し(タイトル)に更新があったかどうかを確認できるようにする必要があります。また、1時間前に抽出されたデータに変更があった場合は、新しいデータのみをデータベースにダンプする必要があります。

4

2 に答える 2

17

各フィードアイテムには、の識別子がありitem.idます。それらを.updated(または.updated_parsed)エントリと一緒に追跡して、新しいアイテムをチェックします。

したがって、アイテムがすでに表示されているか(via item.id)、または最後にチェックしたときから更新されているか(viaitem.updatedまたはitem.updated_parsed)を確認してください。

ただし、フィードパーサーのE-Tagサポートを利用して、変更されたフィードの内容を確認してください。これにより、新しいアイテムのないフィードをダウンロードする必要がなくなります。フィードの新しいコピーを取得するときに、アイテムが追加または更新されたことを検出する必要があります。

于 2013-01-10T11:25:26.400 に答える
1

「適切な」フィードの場合、ETagとlast-modfied-sinceメカニズムを使用できます。これについては、 http: //www.kbcafe.com/rss/rssfeedstate.htmlで説明されています。

ただし、一部のサーバーはこれをサポートしていないため、投稿の日付とIDを確認して、DBにそのような投稿があるかどうかを確認する必要があります。

于 2013-01-10T11:25:54.580 に答える