Pipesメモ
Akiba Hotlineのhttp://www.watch.impress.co.jp/akiba/hotline/20090131/etc_dyna.htmlとかのページはHTMLが怪しい。headが2個あったりする。これをフェッチするとRegexのマッチで挙動がおかしい。マッチした部分が$1とか無視して消える。ソースが長すぎるからという可能性もあるけど。
なのでおかしいHTMLをXHTMLなりXMLなりに整形・変換してくれるサービスを探す。いくつか見つかった。
- HTML Tidy
- TagSoup
- サービスは見つからず
やってみるとどれも日本語が化ける。Shift_JISには対応してないらしい。
いろいろ悩むが、実は携帯用ページがあることに気づく。
- iモード用:http://www.watch.impress.co.jp/akiba/i/hotline/newsindex.html
- SoftBank用:http://www.watch.impress.co.jp/akiba/J/hotline/newsindex.html
どっちも同じにしか見えないけど。これなら超シンプル。さっそくフェッチしてみるがなんと文字化け。
昔の情報だと
このところ一部の日本語が化けるようになってしまった Yahoo! Pipes ですが、どうも HTTP の Content-Type が text/xml や text/plain で charset がない feed が化けて、application/xml や application/octet-stream の feed は化けないように見えます。
Pipesの文字化け - 帝冠ダイアリー
text だけは charset なしだと (XML の encoding に係わらず) us-ascii で扱ってたりするんでしょうか。
とりあえず掲示板に現象だけ報告。
らしいけどヘッダを調べると通常版も携帯版もどっちもtext/html(charsetなし)に見える。
で、文字化け対策として
Yahoo! Pipes の charset 問題の文字化けが直らないので回避策を調べてみました。
Pipes の文字化け回避策3つ - 帝冠ダイアリー
いずれも reverse proxy 的にヘッダ (だけでもないけど) を書き換えるサービスをオリジンサーバと Pipes の間にはさむ方法です。
で3つ挙がってるけど基本的にXML対象のサービスみたいだし、使ってみても文字化け直りません…。
あと忘れちゃいけないポイント:
Yahoo! Pipes の Page Fetch モジュールでスクレイピングし放題 - てっく煮ブログ 跡地
- 最後に正規化される
- a タグに rel="nofolow" が追加されたり、相対リンクが消えたり、HTML 的に変なところを正規化する。途中のモジュールをプレビューしたときも HTML が正規化されているが、正規化は一番最後に走るので混乱しないよう。スクレイピングするサイトのソースを見ながら作業したほうがよさそう。
デバッガの途中の出力はあくまで参考程度。