jQueryでHTMLからRSSフィードのリンクを抽出する方法
まずは先人の知恵をということで、Chrome拡張機能のRSS Subscription Extensionから該当ソースを見てみる。
feed_finder.js
// Find all the RSS link elements.
var result = document.evaluate(
'//*[local-name()="link"][contains(@rel, "alternate")] ' +
'[contains(@type, "rss") or contains(@type, "atom") or ' +
'contains(@type, "rdf")]', document, null, 0, null);
意外とシンプル。
XPathでやるならこのまま使えそう。
jQueryのセレクタに直す
$('link[rel=alternate][type*=rss],link[rel=alternate][type*=atom],link[rel=alternate][type*=rdf]');
<link rel="alternate">
タグはほとんどのブログエンジンで標準出力されるので、これだけでブログなら100%取得できそう。
ブログじゃないサイトは?
よくあるオレオレ実装サイトでは、<link>
タグなど使わず<a>
タグでRSSへのリンクを張っているだけなのところがある。
そんなサイトには、
$($('a[href*=".xml"],a[href*=".rss"],a[href*=".rdf"]'), ':contains(RSS)');
RSSファイルの拡張子で、かつ、リンク文字にRSSが含まれていたらRSSフィードへのリンクとすれば良さそう。
しかし、オレオレRSSフィードは日付形式が違ったりなど微妙な実装が多いのでいちいち対応するのは面倒な気がする。