MyWeb2.0Betaのデータをエクスポート

はてなブックマークに出戻ってAPI生活を送るために、MyWeb2.0 Betaのデータをエクスポートする。

無いのか見つけにくいのか知らないけど、もう探すのはやめた。
なので、自力でエクスポートする事にする。
以下、開発過程のぼやき。

概要は、自分の公開ページの各ページを巡回してスクレーピングするだけ。
あとは、抽出したデータを何かしらの形式にまとめるんだけど、とりあえずdel.icio.usのapi/posts/allをパクる。
表示上長過ぎるもの(タイトルとかURLとか)は省略されたりするので、出来る限りtitle属性を抽出する。

ごり押しの正規表現抽出でいこうと、Perlでスクリプトを書く。
・・・、日本語がとれない。
数度正規表現を書き直すも、きれいに日本語が消えている。

PerlのせいにしてPHPのSAXで抽出する方向で再度挑戦。
・・・,やっぱ日本語がとれない。
HTTP_RequestのgetResponseBodyの中身をみると、この時点で日本語が消えている。
リクエストヘッダに言語情報とかつめたら行けるかと思い、addHeaderしてみる。

User-Agent: MyWeb2.0 exporter/0.1
Accept-Language: ja
Accept-Charset: utf-8
Keep-Alive: 300
Connection: keep-alive
Cache-Control: max-age=0

関係ないかもしれないのも含めて、FirefxのLiveHTTP Headerに表示されるものを突っ込む。
Accept-LanguageとAccept-Charsetを追加した時点で日本語取得は成功。
多分、Charsetの問題だったんでしょう。

途中、PHPのmax_execution_timeが小さかったせいで混乱するもini_setで解決。

折角だから、日付情報も取得しておこうとしてみる。
正規表現が甘く、空白だとか改行とかまで取り込んでしまって大騒ぎ。
"Shared by"を除外して、preg_replaceで改行コードを消し、trimで前後の空白を除去して対応。
昨日より前はHTMLから時間の抽出が出来ないので、抽出時間を充てる。
はてなブックマークのAtomAPI(POST)に日付項目が見当たらないけど、よしとする。
ひとまず、タイムゾーンは気にしない方向。

書き出し先がXMLファイルなので、忘れてたhtmlspecialcharsを各データにしておく。

と、まあこんな感じで右往左往しつつエクスポート成功。

プロフィール

このブログ記事について

このページは、koshigoeが2005年11月 3日 18:41に書いたブログ記事です。

ひとつ前のブログ記事は「SBSのフィードにコメントを含める」です。

次のブログ記事は「MyWeb2.0Betaのデータをエクスポート〜続き」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。