[jQuery] UI Sortableの練習 [jQyery]jquery.numericを使うとsafariでペーストできない
11月 20

いまさらだけど、Yahoo Pipesが面白い。

大まかな使い方は他のサイトを参考してもらうとして、自分が使っていて気づいた点というかメモを書いていきます。

Fetch Pageについて

サイトのHTMLデータをスクレイピングするためのモジュールなのだが、サイトのencodingが、utf-8以外だとパースエラーとなる場合がある。ならない場合もある(謎)。仕方ないのでphpのスクリプトを1つかまして、mb_convert_encodingして渡すが、metaのcharsetもちゃんと変えてないとエラーになる。charset見てるんならutf-8以外も対応してほしいなー。

regexの正規表現について

Operators > regex

では、入力データを正規表現で置換できる。しかし、いわゆるPHPやPerlと完全互換では無いようだ。具体的には、一部のメタ文字や文字クラスが使えない。たとえば、

\w – 英数字
\W – 英数字以外

や、

[:alnum:] – 英数字
[:blank:] – ブランク

など。しょうがないので[0-9]{n}という感じで書くしかない。

Yahoo Pipesが改変するもの

Fetch Pageで取ってきた時点で、HTML中のアンカー(aタグ)において、相対パスは、絶対パスに置き換えられ、rel=”nofollow” target=”_blank”が追加される。targetに違うものが設定されていても、_blankに上書きされる。

まぁ、Yahoo Pipes師匠の言いたいこともわからんでもないが、Fetch Pageの時点でデータが改変されていることに注意したい。

相対パスが絶対パスに置き換わるという点においては、文字コード変換のプロクシスクリプトをかましている場合、そのスクリプトのホストが絶対パスのベースとなるので、RSS出力した際に、相対パスからのリンクがそのホストからになり、当然、404となる。Fetch Pageの後でその部分を再度regexして、オリジナルのホストに戻してやる必要がある。


基本、Fetch Pageしたあとはregexで置換するんだけど、古いサイトだと、HTMLもむちゃくちゃだから、簡単な正規表現ではなかなか置換できない。ここ数日、ひたすら正規表現の練習である。

正規表現は、パズルみたいで面白いけど。


あとは、if(exp)で分岐できたり、各モジュールに一言コメントを入力できると、便利なんだけどなー

[ 追記 ]

2年前にすでにYahoo! Pipes の Page Fetch モジュールでスクレイピングし放題 – てっく煮ブログ さんで同じようなこと書かれてた…僕は2年遅れてたってことか orz=3

Popularity: 3% [?]

written by ANN

add to hatena hatena.comment (2) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 2

Leave a Reply