ページ

2011年1月5日水曜日

エキサイトブログのエクスポート後に、余分な部分を削除する方法。

 
前回の投稿では、ExciteブログからBloggerに引っ越す方法を書きました。


今回は、エクスポートしたファイルから、Bloggerでは不要と思われる、エキサイト固有の部分を削除する方法を紹介します。 前回の記事の「3. エクスポートしたファイルから不要なタグなどを削除する。(任意)」の部分の詳細な解説になります。
 
★ 内容が間違っていたり不具合が起こる可能性もありますので、バックアップを取ってから、自己責任でお試し下さい。



* * *



  エクスポートしたファイルの中身は?


エクスポートしたファイルは、一つの投稿に付き、大体以下のような内容になっていると思います。
(実際は、大部分、改行なしで、ずらずらっと繋がっています。)

------------------
AUTHOR: maniera
TITLE: ブログを引っ越しました。

STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
ALLOW PINGS: 1
PRIMARY
CATEGORY: news
CATEGORY: news
DATE: 12/05/2010 03:37:00

-----
BODY:
<div class="POST_BODY">
<!-- interest_match_relevant_zone_start -->
ここに本文が入ります...。
<DIV CLASS=TAGS>Tags:
中略...
<!-- interest_match_relevant_zone_end -->
<br clear="all"/><div name="im" id="im" style="display:hidden;"></div>

<script type="text/javascript">
中略...
</script>

<script type="text/javascript">
中略...
</script>
    </div>

-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
COMMENT:
AUTHOR: maniera
DATE: 12/12/2010 06:27:00
SECRET: 0
test コメントテスト<BR>
-----
--------

------------------


複数の投稿がある場合は、投稿の数だけ、このパターンの繰り返しになります。

上記の内容の内、赤色部分がエキサイトの広告関連と「タグ」等で、インポートしても機能しないようですが、残っていると気持ちが悪いので、私は削除しました。
 ※ 面倒ならば、消さなくても、多分問題ないのではないかと思われますが...。



投稿本文に付随する余計な部分は、Bloggerにインポート後に、投稿の編集の「HTMLの編集」で消せるので、投稿数が少ない場合は手動で消す方が簡単です。

但し、SECRET:0という部分だけはコメントに付いて来ます。具体的にどうなるかというと、コメント文の前に「SECRET:0」という文字列が入ってしまいます。インポートしたコメントは、削除は出来ますが、修正は出来ないようです。気になる場合は、インポート前に削除します。
※ 見栄えが気にならないなら、そのまま残しても問題ありません。


☆ 上記の点、全て気にならない方は以下の作業は不要です。お疲れ様でした。^^





  自動で削除するには?


大量の投稿がある場合、手動で削除するのは困難です。

当初、エディタの文字列の置換等で行おうとしましたが、不規則に変化する部分があって、置換しきれない所が出てきます。そこで、Microsoft Excel2007のVBAを使って、余分な文字列を消すマクロ「ExciteCutter」を作ってみましたので、参考にして下さい。


残念ながら、「ExciteCutter」はExcel 2000では動作しません。理由の一つはFindメソッドが、1セル辺り、1025文字以上の文字列の場合、検索を1024文字で止めてしまうからです。(当初、Excel2000で作成していて、これが分からずハマリました)

※ 同様の理由で、1投稿辺りの本文が、あまりにも長いと不具合が出るかもしれません..。





  マクロ 「ExciteCutter」

Excelのマクロ、VBAを理解されている方が、中身を見て危険性がないか判断してからお試し下さい。
私もVBAを完全には理解していないので、思わぬ結果になっても保障できません。

特に本文中に引用の形などで、htmlの特定のタグ(下記マクロの赤い文字の部分)が含まれている場合は、どうなるか分かりませんので、注意してください。元データは必ずバックアップを作成してから試してください。


マクロの本体は以下の通りです。
緑はコメント文、赤は検索文字列です。

---------------------------
Sub exciteCutter()
'
' exciteCutter Macro
' 2010/11/19  ユーザー名 :maniera 


   Dim a As Range
   Dim b As Range

   Dim i As long
   Dim j As long



' *** Loop_01  本文前の広告のコメントと、エキサイトのタグを削除 ***
Do
   ' 広告コメントの入ったセルを見つけて、変数aにRangeオブジェクトを格納
   Set a = Range("A:A").Find("<!-- interest_match_relevant_zone_start -->")

If a Is Nothing Then Exit Do

   ' 変数bにaの1行下のセルをセット
   Set b = a.Offset(1, 0)

   ' ターゲット文字列(広告コメント)の出現位置を測定して変数iにセット
   i = InStr(1, a, "<!-- interest_match_relevant_zone_start -->")

   ' ターゲット文字列(広告コメント)から後ろの文字列を削除
   a = Left(a, i - 1)




   ' ターゲット文字列<DIV CLASS=TAGS>の出現位置を変数iにセット
   i = InStr(1, b, "<DIV CLASS=TAGS>")

If i = 0 Then Exit Do

   ' ターゲット文字列<DIV CLASS=TAGS>から後ろを削除
   b = Left(b, i - 1)

Loop




'*** Loop 02 本文後の広告のコメントとスクリプトを削除 ***
Do
   Set a = Range("A:A").Find("<!-- interest_match_relevant_zone_end -->")
   Set b = Range("A:A").Find("</script>")

If a Is Nothing Then Exit Do

    i = a.Row
    j = b.Row

    Rows(i & ":" & j).Select
    Selection.Delete Shift:=xlUp
 
    Set a = Range("A:A").Find("<script type=")
    Set b = Range("A:A").Find("</script>")

    i = a.Row
    j = b.Row

    Rows(i & ":" & j).Select

    Selection.Delete Shift:=xlUp

Loop




'*** Loop 03 コメントのSECRET: 0を削除する ***
do
   Set a = Range("A:A").Find("SECRET: 0")

If a Is Nothing Then Exit Do

    i = a.Row
    Rows(i).Select
    Selection.Delete Shift:=xlUp

loop



    MsgBox ("comlete!")

End Sub


---------------------------






  マクロ「ExciteCutter」の使用方法


自分でも忘れてしまうので、メモしておきます。^^

  1. excel2007を起動。
     
  2. もし、[開発]タブが表示されていない時は、officeメニューでEXCELのオプションを選び、基本設定で「[開発]タブをリボンに表示する」にチェックを入れる。
     
  3. 開発タブの VisualBasicを押す。
     
  4. MicrosoftVisualBasicという別窓が出たら、左の窓(プロジェクト-VBAProject)の中の「VBAProject(Book1)」の上で右クリック、挿入>標準モジュールを選択。
     

    ”MicrosoftVisualBasic”
      
    左上の窓が「プロジェクト-VBAProject」です。
    右の窓に「exciteCutter」のコードを貼り付けます。

      
  5. 新しいモジュール「Module1」が出てくるので、右の真っ白な窓に、「exciteCutter」のコードを貼り付ける。
     
  6. 変換したいtxtファイルをドラッグ&ドロップでexcelのワークシートBook1の部分に放り込む。
     
  7. excelの開発タブのマクロを押して、マクロの小窓が出たら、「Book1!exciteCutter」を選んで「実行」を押す。すると、画面がチカチカして不要な部分を削除し始める。
     
  8. 「comlete!」の小窓が出たらOKを押して処理は終わり。
     
  9. データの入った全てのセルを選択して、Ctrl+Cでコピーします。メモ帳の新規ファイルにペーストしてから、UTF-8形式のtxtファイルとして名前を付けて保存する。

    セルを素早く選択する方法:
    データの入った一番下のセルを探し出して選択(なぜかctrl+endでは違う所に行くので手動で行う)、ctrl+shift+homeを押してから、ctrl+shift+→(右カーソル)を押して選択する。

    注意!データが変になる(文字列中の ダブルクォーテーションが重複して付加されてしまう)ので、Excelで txt形式として保存してはいけません。 必ず、メモ帳にデータを貼り付けて、UTF-8で保存して下さい。
      
     
  10. officeメニューで「閉じる」を選択、「変更を保存しますか?」では「いいえ」を選択してファイルを閉じる。
      
  11. また別のファイルを処理する場合は、6.に戻る。変換したいファイルの数だけ、上記6.から10.の作業を、繰り返す。
     
  12. excelを終了時に「VBAを保存しますか?」等と聞いてきた時は、「いいえ」を選ぶ。
     



* * *



繰り返しになりますが、今回の内容は、前回の記事の「3. エクスポートしたファイルから不要なタグなどを削除する。(任意)」の部分だけの詳細な解説です。もしこの処理を行う場合は、前回の記事をご覧の上、 エクスポート直後に行って下さい。この前後の作業は、前回の記事を参照願います。




間違いがあったらコメントでご指摘下さい。^^;
以上です。

  

0 件のコメント:

コメントを投稿