スポンサーサイト

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

エキサイト(Excite)ブログからFC2ブログの引越しツール修正

新しいドメインをとった手始めに、エキサイトブログからの引越しツールをWeb上で提供しようと思いたった。前は、rubyのスクリプト自体を提供し、ユーザ側でスクリプトの所定の値を修正して、ブログのドメインや年月を設定してもらう形だったが、これだと、rubyをインストールしている人しかできないため、もっと多くの人に使ってもらうために、Web上でできるようにしたいと思った。

単純に、サーバサイドで実行すればいいと思ったのだが、それ以前に、前のスクリプトではいくつか問題があった。それは、このブログにリンクしている人のブログから知ったのだが、タイトルが取れていなかった。
試しに自分のブログで実行したが、確かにタイトルが空になる。前バックアップしたものを見ると、設定されている。何が原因かと思えば、エキサイト側でHTMLを変更している。

このスクリプトは単純にHTMLを取ってきて、正規表現に引っ掛けて持ってきているので、HTMLを修正されてしまっては、正常に動作しなくなる。大文字小文字を区別しないなど多少の融通が利くようには作ったつもりだったが、ちょっと属性が入っただけで駄目になるなど問題は残っていた。あと、試したサイトは知人のpataさんのサイトだけだったので、どれだけ通用するかわからなかった。

まずは、自分のブログが正常に持ってこれるように修正した。
以前なら、<div class="POST_TTL"><A NAME=\d+.*?>のあとにあったのだが、A NAMEタグがなくなっている。さらに携帯から投稿した場合に、タイトルの前にIMGタグが入っている。

この辺を修正することで、自分のブログは大丈夫になったが、他のブログを見ると全然違う。テンプレートが違えば、この辺のタグも変わってしまうのだろうか。タイトルのところも<div class="POST_TTLだったり、<pタグだったり、class名がpost_titleだったり、ダブルコーテーションがなかったりと統一されていない。
これだけ違うと、同じプロセスの中では処理しがたい。が、結局、ORを使ったり、if文で分岐させることで、一つのスクリプトの中に収めた。まあ、すべて試していないので、別のテンプレートを使っていたら駄目かもしれない。

ポイントとしては以下の通り。
・大文字小文字の違いの許容 /iを使用
・ダブルコーテーションなしにも対応 "?を使用
・スペースや属性追加への対応 .*?を使用
・ちょっとした違いは(xxx|yyy)で対応するが、大きな違いはif分岐

正規表現が複雑になってくると、ソースが汚くなってくる。何を抽出しているかを明確にするために外出しにした方がいいかもしれないなど、課題はいろいろある。
ソースのコメントにRDFがあったが、ここにはURLとタイトルしかない。RSSはコメントやトラックバックはなく、古いものは多分取れない。
なので、HTMLから持ってくるしかないが、この辺を楽に出来るHTMLパーサがあればいいのだが、と思うが、縦棒|で区切られているところがあることを考えると、やはり正規表現が一番かもしれない。

Webから情報を抽出してくる要望は多いと思うので、この辺を楽に組めるフレームワークがあればと思う。ブログやSNSの引越しは結構重要かなと思う。MovableType形式に統一されればいいのだが。


一箇所、処理に時間がかかるところがあった。最初はネットワークの問題かと思ったら、そうではなく、正規表現検索で時間がかかっていた。最初はトラックバックが多すぎるからかと思ったが、そうではなくヒットしなかったからのようで、ヒットするように修正したらさっと進むようになった。

ようやく正常に動作するようになり、これをサーバ側においてcgiで呼び出せばいいと思ったが、ここでも一苦労。この続きは後ほど。

とりあえず修正した本体スクリプトはここ
使い方は、AUTHORの設定をしなくてもよくしたのを除き、同じ(サーバ版は今進行中)。


対応できるブログは多くなったと思うが、ただし、http://blog.excite.co.jp/shokotanのように、独自ドメインのない公開ブログは駄目。ちょっと直せばできるようにはなるが、まず要望はないはずなので、やらない。

あと、イメージリストも作成するようにした。
これは単にエキサイトにアップロードされている(リンクがあるもののみ)イメージファイルのURLを羅列しただけのもの。イメージのダウンロードは、ReGetなどのクローラを使って行う。
こうしておけば、文字情報とイメージ情報をバックアップできる。まあ、エキサイトにはインポートがないので、いざ壊れてしまった場合は、その情報を持ってfc2ブログなどに移動するのがよいが。

イメージの引越しも考えたが、これは不可能。fc2ブログにイメージのインポートの機能がないため。
やるとしたら、fc2に自動的にアップロードするツールを作り、そのIDを本文中に埋め込むなど、結構厄介。
なので、基本的には、イメージはエキサイトに残しておいた方がいい。ブログ本文を編集してイメージのリンクはなくなったとしても、その投稿を削除しない限り、イメージは残ったままになるので、本文は削除して、同一記事へのリンクを引っ越した旨の記載とともに載せておくのがいいかもしれない。
関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


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