Open11

"RSSとAtomを知らない子供たち"なので調べる

Kumamoto-HamachiKumamoto-Hamachi
Kumamoto-HamachiKumamoto-Hamachi

RSS is 何?

RSSとは「Webサイトの新着情報を配信するフォーマット
RSSは、XML形式で記述されており、RSSリーダーと呼ばれるツールを使用することで、様々なサイトの更新情報や新着情報を自動的に取得することができます。

RSSって何?RSSの仕組みを理解し、RSSリーダー「Feedly」を使ってみよう! : ビジネスとIT活用に役立つ情報

バージョンごとにRich Site SummaryやRDF Site Summary、Really Simple Syndicationと元の名称が変わっています。似たフォーマットとして、Atomというのも開発されています。

【Python】feedparserでRSSフィード解析 | amateur engineer's blog

https://www.m3tech.blog/rss
https://engineering.mercari.com/blog/feed.xml

Kumamoto-HamachiKumamoto-Hamachi

RSSリーダーとは?

RSS リーダーは、リーダーに登録されたWebサイトのRSSをチェックし、新しく追加された新着情報があれば、その「ページタイトル」「アドレス」「見出し」「要約」「更新時刻」などを表示します。その中から興味のある見出しをクリックすると、該当ページが表示されます。

RSSって何?RSSの仕組みを理解し、RSSリーダー「Feedly」を使ってみよう! : ビジネスとIT活用に役立つ情報

feedly

RSSの1つ。
Welcome to Feedly

chrome拡張のrss

RSS Feed Reader - Chrome ウェブストア

「RSS」と「RSSフィード」の違いは?「RSSリーダー」って何?

「RSS」はニュースサイトやブログなどの更新情報を配信するための技術であるのに対し、「RSSフィード」はRSS形式で配信される情報のことです。

「RSSフィード」は、通常「RSSリーダー」と呼ばれるツールを利用して取得することができます。具体的には、RSSフィードのURLを「RSSリーダー」に登録して利用します。また、複数のサイト(URL)を登録することができるので、受信したサイトの更新情報をまとめて管理できます。

もう古い?!RSSで効率よく最新情報を取得する方法とは

Kumamoto-HamachiKumamoto-Hamachi

Atom is 何?

RSSやATOMはフィードというサイトの更新情報を配信する仕組みでテキスト配信のみのRSS1.0と文字の装飾やリンク設置が可能なRSS2.0、RSS2.0と似ていながらよりシンプルな仕様のATOMがあります。

RSSはさらにRSS1.0とRSS2.0に分類することができて、ATOMと合計で3種類の配信フォーマットがありますが、RSS2.0はRSS1.0の後継フォーマットというわけではなく、開発企業も仕様も全く異なる別のフォーマットです。むしろRSS2.0とATOMの方が仕様が似通っている部分もあります。

RSSとATOMの2種類のフォーマットがあるのではなく、配信する情報内容と質によってRSS1.0、RSS2.0、ATOMの3種類のフィードがあると考えれば良いでしょう。
※フィードとはコンテンツ配信の文書フォーマットであるRSS、Atomをまとめて指す言葉

ATOMとRSSの最大の違いはATOMには配信と編集の2つのフォーマットが用意されていることです。

RSSとATOMの違いと特徴は?配信方法やサンプルフォーマットあり| medifund

要素

Atom - RSS改訂の試み
Atomフィードの書式についてのメモ - Vがいる日々

  • feed
    RSSで言うところのchannel要素

  • entry
    RSSで言うところのitem要素

  • href
    RSSのlink要素

カテゴリー要素

「カテゴリー」を示すcategory要素を持つことができるようになっています。

  • カテゴリーを示す分類名はterm属性で記述する(必須)
  • 必要に応じて、そのスキーム(名前空間)をscheme属性でIRIとして示す
  • また、アプリケーションが人間読者に示すためのラベルをlabel属性で加えることができる(category要素または祖先要素のxml:langに従う)

<category term="Music" scheme="http://xmlns.com/wordnet/1.6/" label="音楽"/>

名前空間

トップレベルの要素feedにデフォルトの名前空間として指定されていますので,feed以下の要素も,指定されていない限りAtomの名前空間に属します.
rssと違い基本的には名前空間が共通化されています。

4種類のコンストラクト

Atomフォーマット全体で幾つかの要素で共通に使われる構成。

Contentコンストラクト

Personコンストラクト

Dateコンストラクト

Linkコンストラクト

Kumamoto-HamachiKumamoto-Hamachi

RSSのがっつり仕様とよくわかってない箇所

RSS とは、ウェブコンテンツのシンジケート(配信)フォーマットのことです。

RSS 文書のトップレベルは、version という必須属性をもった <rss> 要素となります。その文書が準拠する RSS のバージョンを指定します。この仕様に準拠する文書であるなら、version 属性は 2.0 でなければいけません。

<rss> 要素の下位属性は、単一の <channel> 属性となります。<channel> 属性は、そのチャネル(メタデータ)とそのコンテンツに関する情報を含むものです。

チャンネルには、どれだけ <item> 要素を含めても構いません。item は新聞や雑誌にあるような "記事" を表すかもしれません。、description が記事の粗筋だとしたら、link は全記事を指し示します。

RSS 2.0 Specification 日本語訳 - futomi's CGI Cafe

オプションのchannel要素

cloud 🔥

https://www.futomi.com/lecture/japanese/rss20.html#ltcloudgtSubelementOfLtchannelgt

RSS フィード用のライトウェイトな配信予約プロトコルを使って、
チャンネルへ更新を通知してもらうために、cloud に登録することができます。

この例では、それが現れるチャンネルでの通知をリクエストするために、
XML-RPC メッセージを、port 80 で、パスを /RPC2 と指定して、rpc.sys.com に送信します。

呼び出すプロシージャーは、myCloud.rssPleaseNotify です。

rating

チャンネルのpics(Platform for Internet Content Selection)レーティング。
PICSとは、Webページにおける特定の情報を表示しないようにするための技術のことである。W3Cによって標準化されている
=>要はエッチなサイトとかのフィルターとかのあれに使われる感じっぽい?

PICSとは ピックス: - IT用語辞典バイナリ

skipHours skipDays 🔥

アグリゲーター??

アグリゲータは何時にスキップすることができるかを伝える暗示です。
詳細情報はこちらをご覧下さい。

<item>要素

Kumamoto-HamachiKumamoto-Hamachi

feedparserと遊ぶ

Python, feedparserでRSS, Atomフィードを解析 | note.nkmk.me

import feedparser
import pprint
import time

if __name__ == "__main__":
    print(feedparser.__version__)
    print("Atom形式")
    d_atom = feedparser.parse("http://gihyo.jp/feed/atom")
    # <class 'feedparser.FeedParserDict'>
    print("type:", type(d_atom))
    pprint.pprint(d_atom, depth=1)  # debug

    print("*" * 30)
    print("RSS1.0形式")
    d_rss1 = feedparser.parse("http://gihyo.jp/feed/rss1")
    # <class 'feedparser.FeedParserDict'>
    print("type:", type(d_rss1))
    pprint.pprint(d_rss1, depth=1)  # debug

    print("*" * 30)
    print("RSS2.0形式")
    d_rss2 = feedparser.parse("http://gihyo.jp/feed/rss2")
    # <class 'feedparser.FeedParserDict'>
    print("type:", type(d_rss2))
    pprint.pprint(d_rss2, depth=1)  # debug

feedキー

feedキーにはフィード自体の情報(配信されている情報)が格納されている。
feedキーの値もFeedParserDictとなっている。

updateとかlinkとかもろもろ

entriesキー

entriesキーはFeedParserDictを要素とするリストとなっており、それぞれのFeedParserDictにコンテンツの詳細情報が格納されている。
各コンテンツのURL(link)、タイトル(title)、要約(summary)などの情報が含まれている。

Documentation — feedparser 6.0.2 documentation

Kumamoto-HamachiKumamoto-Hamachi

feedparaser キホン

共通のRSS要素

https://feedparser.readthedocs.io/en/latest/common-rss-elements.html

共通の<channel>要素

  • feed
    タイトル、リンク、説明、発行日、エントリID

共通の<item>要素

  • entries

共通のAtom要素

https://feedparser.readthedocs.io/en/latest/common-atom-elements.html

共通の<feed>要素

  • feed
    タイトル、リンク、サブタイトル/説明、各種日付、およびIDです。

共通の<entry>要素

  • entries

オプショナルなRSS要素

https://feedparser.readthedocs.io/en/latest/uncommon-rss.html

  • フィードイメージ
    feed.image
  • 複数カテゴリ
    feed.categories

オプショナルなAtom要素

https://feedparser.readthedocs.io/en/latest/uncommon-atom.html

Kumamoto-HamachiKumamoto-Hamachi

feedparser 応用

Content Normalization

https://feedparser.readthedocs.io/en/latest/content-normalization.html

Universal Feed Parser can parse many different types of feeds: Atom, CDF, and nine different versions of RSS. You should not be forced to learn the differences between these formats. Universal Feed Parser does its best to ensure that you can treat all feeds the same way, regardless of format or version.

すごーい。RSSをAtomとして逆にAtomをRSSとして扱うみたいなことも可能な限り出来るらしい。

Namespace Handling TODO

https://feedparser.readthedocs.io/en/latest/namespace-handling.html

Universal Feed Parser attempts to expose all possible data in feeds, including elements in extension namespaces.