タイトルどおり、さまざまなブログからのRSSを集約する小さなアプリケーションを構築しようとしています。この操作のためにfeedparserをテストして探索しようとしていますが、RSSフィードを検出するコードの平和を書き込もうとして立ち往生しています。
ほとんどの人は、RSSフィードへの正確なURLではないwww.mysite.com/blogを入力するだけです。RSSフィードを検出する方法がある場合は、RSSURLを表示できるブラウザの動作を複製しようとしています。
何か案は?
ブラウザは、RSSフィードの自動検出とAtomフィードの自動検出を使用して、特定のWebページ上のフィードを検索します。
たとえば、djangoの質問リストは、関連するページのHTMLヘッダーで次のリンクにリンクされているAtomフィードを介して利用できます。
<link rel="alternate" type="application/atom+xml" title="Feed of questions tagged python" href="/feeds/tag/python" />
<link rel="alternate">
これらを見つけるには、特定のページのタグを解析する必要があります。application/atom+xml
またはタイプのすべてがapplication/rss+xml
適合します。
BeautifulSoupのようなものを使用してHTMLドキュメントを解析し、RSSフィードを探します。以下は基本的な例であり、必ずしも最も効率的ではありません。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
rss_links = soup.select('link[type="application/rss+xml"]')
for link in rss_links:
rss_url = link.get('href')
BeautifulSoupの完全なドキュメントを参照してください。
これにぴったりの素晴らしいアプリがあり、Feedjackと呼ばれています
しかし、RSSフィードに含まれる文字数が100未満になると、頭を壁にぶつけてしまうことに気付くでしょう。
フルコントロール(必要なものを正確に集約)およびRSSフィードのないWebサイトには、Scrapyをお勧めします