Yahoo! Pipesに食わせるRSSをHTMLから生成するよ Feed43

 Yahoo! Pipesで複数のフィードをまとめてみると、いろいろ意外な発見とかがあっておもしろい。Pipesでいろいろ加工すると、なんかまったく別のものになったり。
 ただ、使っているうちに、ソースとなるRSSフィードそのものに不満が出てくる。たとえば、Yahoo!ニュース(日本の)のRSSフィードは記事のリンク先がいまいち使えない。各ジャンルを細かいカテゴリに分けたそのトップページになってしまっている。記事そのものではないのだ。
 具体的にいうと。RSSのURLはこれ。この中で「松ちゃんカンヌで“洗礼”「監督の才能ないのでは」」ってのが気になったとしようよ。これで得られる記事のリンク先はこれだったりする。ほんとに欲しいURLはこっちなんだけどな、っていう具合。
 その時点で、目的の記事にたどり着くことはできるけど、1ステップ余計な操作が必要になる。さらに、このURLを保持しておいて、数日後に見たとしたら、そのページは刻々と更新されてるので、目的の記事にたどり着くのにはもっと多くのステップが必要となるわけである。
 めんどくせー。
 RSSで配信される個々の記事のURLを、このページみたいに配信してくれれば、それでいいんだけど。
 といういうことで、いろいろ探しててたどりついたのが、これまたすばらしいサービスで、感動した。


 FEED43というサービスだ。
 ここからが本題。FEED43の使い方をメモしておこうという趣向です。
 FEED43は簡単な手順でHTMLからRSSフィードを生成してくれるサービス。まあ、ほかにもいろいろ機能はあるんだけど、今回はこれにしぼって。
 FEED43は無料で利用可能(有料コースにすれば機能が増える)で、ユーザー登録も不要(登録すれば機能が増える)。
 RSSの生成はトップページから「Create your own feed」をクリック。
 Step 1. Specify source page address (URL)
 RSSフィードを生成したいもととなるページのURLを指定。
 また、文字コードも指定しておきます。
 euc-jp、shiftjis、utf-8 (default)なんかで。入力後、「Reload」ボタンをクリック。
 指定したページのソースが表示されます。
 Step 2. Define extraction rules
 展開するルールを定義します。
 Global Search Patternは大枠。記事がリストアップされてるとこあたりの前後のタグで「{%}」をくくってやればいいです。これはわりとテキトーでいいです。
 ただ、複数の似たような構成のパートがある場合は、うまくいかないこともあるので、classやidがある場合はそのへんをしっかり入れるようにすればいいと思われます。
 先のYahoo!ニュースのページでいうと、こんな感じ。
 <table cellpadding=2 cellspacing=0 border=0 width="100%">{%}<tr><td></td><td align=right>
 でもって、Item (repeatable) Search Pattern。
 リンク用のタグ(a)とそれで囲まれた文字列を抽出する場合が多いと思われるので、
 <a href="{%}" >{%}</a>
 でOK。まあ、classとかが指定されてたら(たぶん、そんな場合が多い気がする)、それも足しておきます。
 ここで指定した{%}が以降のステップで参照できる部分になります。
 詳しくは、「Extract」ボタンのクリックで判明します。
 Clipped Dataというテキストボックスに、先ほど指定したルールで抽出されたアイテムが並ぶことになります。
 Item1
 {%1}=(抽出されたURLその1)
 {%2}=(抽出されたaタグではさまれた文字列その1)
 Item2
 {%1}=(抽出されたURLその2)
 {%2}=(抽出されたaタグではさまれた文字列その2)
 
 って感じで、20個の記事が並びます。
 もう、ここまでくればわかりますかね。じゃあ、次。
 Step 3. Define output format
 出力フォーマットの定義。以下の項目を入力していきます。面倒なので必須項目だけ。
 ここは大きく2つのパートにわかれてます。最初は
 RSS feed properties
 Feed Title:フィードのタイトルを指定
 Feed Link:フィードへのリンク
 Feed Description:フィードの説明みたいなやつ
 これらは自分で使いやすいように(わかりやすいように)適当に入れましょう。実際には、以下のほうが大事でしょう。
 RSS item properties
 Item Title Template:RSSフィードの記事のタイトルになる部分を指定
 Item Link Template:RSSフィードの記事のリンクになる部分を指定
 それぞれ、「{%2}」、「{%1}」を指定。Step 2の結果からどれをどのように指定すればいいかだいたいわかるはず。
 で、「Preview」ボタンをクリックすると、これまで定義したルールで生成されたRSSフィードが表示されます。
 フィードのタイトルやDescriptionが文字化けしたりしてますが、本体は大丈夫なので、よしとしましょう。
 Step 4. Get your RSS feed
 フィードのURLと、次回以降フィードを再編集するためのページのURLが表示されます。
 これでひとまず、終わりです。
 ユーザー登録不要なのに、それぞれユニークなURLを生成することで、使いまわし、再編集ができるという贅沢なサービスっぷりです。
 無料版の制限
 アイテムの数が少ない(最大20個)までと、更新頻度が長いとか、FEED43へのリンク(広告)が含まれる、などなど。
 広告に関しては、Yahoo! Pipes側で対処できるので、あまり問題なし。最初の2つも、こんくらいでいいや、って感じがしてます。
 用語が間違ってたり、和訳の際に勘違いしてるとこもあると思いますが、とりあえず、メモってことで。 
 関連。
 Yahoo! Pipesでソース名を追加する
 Yahoo! Pipes関連、個人的まとめ

コメント

  1. Kawanami Daisuke より:

    すみません聞きたいのですが、step1でつまづきました。

    また、文字コードも指定しておきます。
     euc-jp、shiftjis、utf-8 (default)なんかで。

    とありますがどういう意味でしょうか?

    普通にコピペしたら Tried to load source page, but remote server reported “Can’t connect to http::80 (Bad hostname)”.と表示されて先に進めませんでした。

    自分の現状としてはRSSがないサイトでも購読したい特定のページがあり、いくつかRSS生成サイトを使ったのですが、どれもうまく購読できず・・・。
    ここにたどりつきました。

    ご教授おねがいできませんか?

  2. kawanami daisuke より:

    さきほどの質問ですが記載したアドレスにお返事くれるとありがたいです。。。

  3. ここの人 より:

    フィードの文字コードは自分で調べてください。まずは「文字コード」とかでGoogleで検索されてはいかがですか?

    また、英語のメッセージは書かれているとおりだと思われます。Feed43のサーバーが、フィードを読み込めてないのでは?
    Feed43からのアクセスを、目的のサーバーが拒否しているのかもしれません。