Entries

スポンサーサイト

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Yahoo!PipesでYahoo!ニュースをRSS配信させる

Yahoo!PipesでYahoo!ニュースをRSS配信させる



 今回は、Yahoo!Pipesを利用してYahoo!ニュースをトピック毎にRSS配信させたいと思います。


 Yahoo!Pipesの大まかな使い方と利便性を理解していただけると思います。


 Yahoo!Pipesって何ですか?という方は、過去記事【ツール】Yahoo!Pipesを参考にしてください。


※Yahoo!PipesでRSSを配信させる方法は一つではないため、今回の例は参考程度にしてください。



  【Yahoo!PipesでYahoo!ニュースの天気概況をRSS配信させる】




1.『Create a Pipe』から新規パイプ作成ページを開く。




2.RSS配信させたいページのURLを取得する。

  今回、RSS配信させたいページのURLは、 ”http://dailynews.yahoo.co.jp/fc/domestic/weather/news_list/?pn=1” である。このURLを『Fetch Page』のURL欄に記入しても良いが、今回は『URL Builder』を用いてURLを基から作成したいと思う。

  『URL Builder』は、 Url から持ってくる。

urlbuilder1.jpg


  Baseに ”http://dailynews.yahoo.co.jp/fc/domestic/weather” 、Path elementsに ”news_list/” 、Query parametersの左側に ”pn” 、右側に ”1” を記入する。(Baseに ”http://dailynews.yahoo.co.jp/fc/domestic/weather/news_list/” と記入しPath elementsを省略しても良い)

  Refreshすると、Debuggerに ”http://dailynews.yahoo.co.jp/fc/domestic/weather/news_list/?pn=1” と表示されるはずである。

  よって、『URL Builder』では、BathとPath elementsの間に ”/” 、Path elementsとQuery parametersの間に ”?” を入れたURLが作成されることが分かる。Path elementsやQuery parametersに『Text input』等をつなげると、パイプ作成後も容易にURLを操作することが出来るようになる。




3.『Fetch Page』で利用する範囲を抽出し、必要に合わせてコンテンツを区切る。

  『Fetch Page』を Sources から持ってきてURL欄を『URL Builder』とつなげる。すると、『Fetch Page』のURL欄は ”url [wired]” となる。

fetchpage.jpg


  RefreshをしてDebuggerを見ると、指定したURLのHTMLプレビュー(html)とソース(source)が表示される。これを参考にして必要な個所を探すと、ドラッグ指定してある個所が必要となりそうである。(図はsourceに切り替えたもの)

fetchpagedebu.jpg



  ここで、必要となりそうな個所の前後で独立しているタグを探すと、 ”<ul class="mdMain">” と ”</div>” が良さそうである(他を選んでも良い)。よって、Cut Content fromに<ul class="mdMain">と</div>を記入して、DebuggerをRefreshすると、必要な個所のみのHTMLが表示される。

fetchpage1.jpg

fetchpage1debu.jpg


  その結果を見ると、<li>~</li>間で区切るとちょうど良さそうであるため、Split using delimiterに ”<li>” を記入する。そうすると<li>が出現するごとにコンテンツが区切られ、複数のコンテンツが作成される。

fetchpage0.jpg

fetchpage0debu.jpg




4.『Filter』『Regex』を使用して、不必要なコンテンツ・記述を調整する。

  『Filter』を用いて、不必要なコンテンツをブロックし、『Regex』を用いて、不必要な記述を置換しておく。両モジュールとも Operators から持ってくる。

  今回の場合、<ul class="mdMain">は必要無いため、これを『Regex』で無記入と置換して削除する。ただし、コンテンツ0は<ul class="mdMain"></ul>だけであるため置換すると無記入状態となるがコンテンツ自体は無くならない。したがって、コンテンツ0は『Filter』によってブロックする。


  『Regex』では、item.contentの<ul class="mdMain">を無記入と置換するため、replaceの欄に ”<ul class="mdMain">” を記入する。今回は未記入だが、withの欄にキーワードを入れるとそのキーワードに置換される。『Regex』の詳細は、後述する。

  『Filter』では、『Regex』でcontent0が無記入となったため、item.contentで ”a” を含むコンテンツ全てを許可し、無記入のcontent0のみをブロックする。(基本的なコンテンツはaを含んでいることを利用している)

  これらによって、<ul class="mdMain">がコンテンツから削除された。

filter.jpg

filterdebu.jpg



5.『Rename』を使用して、RSSで必要なtitle、description、linkを作成する。

  『Rename』を利用して、contentを複製しそれぞれの名前をtitle、description、linkに変える。『Rename』は Operators から持ってくる。

  数は+を押すと増え、-を押すと消える。今回はtitle、description、linkが必要なため、3つ作成する。

  Copy asはコピー、Renameは名前の変換を意味し、先にcontentをRenameしてしまうとitem.contentは存在しなくなってしまうため、最後にRenameを行うようにする。

  以上のことを行うと、コンテンツ毎にtitle、description、linkと名前の異なる3つの同じ内容のコンテンツが作成される。

rename.jpg

renamedebu.jpg




6.『Regex』を使用して、コンテンツ内容を調整する。

  『Regex』を用いて、コンテンツの内容を名前に応じて調整する。正規表現を用いる。

  『Regex』における「g」、「s」、「m」、「i」の意味
 「g」 ・・・ 重複利用
 「s」 ・・・ " . "が改行ともマッチするようになる
 「m」 ・・・ 文字列を複数行として扱う
 「i」 ・・・ 大文字、小文字を区分しない

  \1 または $1 ・・・ グループ化”()”にマッチした文字列を参照
  .*?★ ・・・ 最も近い★に一致するまでを表す

  正規表現については、自分で思考錯誤することが一番理解しやすいように思います。正規表現を詳しく覚えずとも、Debuggerを使いながら地道に必要ない部分を削っていってもRSSは作成できるため、必要に応じて学習してください。

 参考
Wikipedia:正規表現
サルにもわかる正規表現


 今回の場合、以下のように記入すると必要な内容のみ残すことが出来る。

  title ・・・ replaceに ”<a.*?>(.*?)</a.*”  、 withに ”$1”  、 「s」にチェック
  description ・・・ replaceに ”<.*?>”  、 「g」にチェック
  link ・・・ replaceに ”.*?href="(.*?)".*”  、 withに ”$1”  、 「s」にチェック

regex.jpg


  これをPipe outにつなげるとRSS配信パイプの作成は完了します。


pipeout.jpg




最後に

 今回のパイプは、Yahoo!ニュースのトピック全てに対応しているため、URLを変更するだけで同様のRSSを作成することが出来ます。

 Yahoo!Pipesは米国Yahoo!が管理していますが、無名企業よりは継続可能性は高いですが今後どうなるかはわかりません。大変便利なサービスですが、節度を持って利用したほうがいいと思います。




関連記事

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

ブログ内検索

アーカイブ


ディスプレイ広告



テキスト広告

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。