アプリ版:「スタンプのみでお礼する」機能のリリースについて

HTMLソースの、特定の行に記述がある「文字」(商品名)をHTMLのタイトル<TITLE>●●</TITLE>の部分に移動させる便利な方法はありませんでしょうか?

ネットショップを運営しており、商品数が5000個ほどあります。
1ページに1商品の作りでページを作っており、そのページのタイトルに、商品名を入れたいと考えました。
しかし、それを一つ一つ行っていたら膨大な時間がかかるので、何か便利なソフトがないかと思いご相談させていただきました。

タイトルの行数、商品名の記述がある行数は、全ページ共通です。手作業でやれば、それほど難しい作業ではなく、商品名のところをコピーして、<TITLE>●●</TITLE>の●●の部分に貼り付けていくだけの単純作業です。

置き換えソフトなども考え、いろいろ考えましたが、ギブアップしました。

一括で、特定の位置にある語句を、特定の位置に移動できるソフト、もしくは方法があるようでしたら、教えてください。
よろしくお願いします。

A 回答 (5件)

気に入らなかったので作り直しました。


#3、#4の回答はなかったことにしてください。

○ 動作環境&前提条件

・Windows2000 or WindowsXP
・HTML の文字コードは SJIS であること
・HTML中【商品名】の存在する行は10行目であるとする。
 実際には10行目でなかった場合は exesed1.bat を修正してください。
・コマンドラインから実行します。


○ 事前準備

1) 以下から sed プログラムをダウンロードし sed.exe を system32 フォルダにコピーする

http://www.vector.co.jp/soft/win95/util/se015016 …

2) 念のため元 html は全部バックアップしておく

3) 次のバッチファイルを作成しておき、コピーしたhtmlファイルがある作業フォルダに保存する。

・exesed1.bat
echo %1.html>> %2
sed -e "10 {" -e "s/[^&]*\([^<]*\)\(<.*\)/\1/" -e "p" -e "}" -e "d" %1.html >> %2

★商品名が例えば 20行目に存在するのなら 10 と書いてあるところを 20 に変更してください。


4) 次のスクリプトファイルを作成し上記と同じ作業フォルダに保存する。
・make_replace.sed
N
s/\n/ /
s/\([^ ]*\) \(.*\)/sed "s\/<TITLE>.*<\\\/TITLE>\/<TITLE>\2<\\\/TITLE>\/" \1 > newpage\\\1/
p
d



○ 作業開始

1) コマンドプロンプトから 作業用html のあるディレクトリに移動する

2) 置換作成するページを保存するディレクトリ newpage をその作業ディレクトリ配下に作成する

3) 対象ファイル一覧を作成
dir *.html > work1.txt

4) 対象ファイル名だけの一覧を以下のコマンドで整形
sed "s/.\{39\}//" work1.txt > work2.txt

5) 対象ファイル一覧を整形
上下に存在するファイル名と関係ない行を削除

6) ページ名、商品名を抜き出すバッチファイルを作成
echo del page_shohinmei.txt > make_page_shohin.bat
sed "s/\(.*\)\.html/cmd \/c exesed1 \1 page_shohinmei\.txt/" work2.txt >> make_page_shohin.bat

7) ページ名、商品名抽出バッチファイルを実行
make_page_shohin.bat

ページ名A
商品名A
ページ名B
商品名B

という形式のファイル(page_shohinmei.txt)が作成されているはず。


8) 置換を実行するバッチファイルを作成する
sed -f make_replace.sed page_shohinmei.txt > replace.bat

それらしい感じのバッチファイルが生成されていることを確認する。

9) 置換実行バッチファイルを実行する
replace.bat

10) newpage というフォルダに同名の置換されたファイルができているはず。

この回答への補足

大変ご丁寧な回答ありがとうございます。2時間もお時間を掛けて頂き、感謝感激です。ご指導いただいたとおり、まずやってみます。できましたら、こちらでまたご連絡します。取り急ぎ、お礼までに。

補足日時:2005/11/12 17:57
    • good
    • 0

書き込んだら妙な形に変換されちゃっています。

(^^;

exesed1.bat はこちらに変更してください。

・exesed1.bat
sed "1,9d" %1.html | sed "2,10000d" | sed "s/[^&]*\([^<]*\)\(<.*\)/\1/" >> %2

★商品名が例えば 20行目に存在するのなら 1,9 ではなく 1,19 に変更してください。
    • good
    • 0

面白そうなので参戦します。



sed(ストリームエディタ)使えばできそうです。

というか簡単そうだと思ったので試しにやってみたら2時間ぐらいかかってしまった…(^^;<TITLE>●●</TITLE>の部分を全部同一に変えるのなら本当に簡単にできてしまいますが、今回はページごとに違うわけなので、その辺が難しいですね。

以下の手順をよどみなくやれば作業自体は5分もあればできるでしょう。
5000ファイルぐらいなら楽勝だと思います。


○ 動作環境&前提条件

・Windows2000 or WindowsXP
・HTML の文字コードは SJIS であること
・HTML は 10000 行以下とする。
・ファイル拡張子は html を想定しています。
・HTML中【商品名】の存在する行は10行目であるとする。
 10行目でなかった場合は exesed1.bat を修正してください。
・コマンドラインから実行します。


○ 事前準備

1) 以下から sed プログラムをダウンロードし sed.exe を system32 フォルダにコピーする

http://www.vector.co.jp/soft/win95/util/se015016 …

2) Microsoft Excel を使えるようにしておくこと
3) 念のため元 html は全部バックアップしておく
作業用のフォルダに全部の html をコピーする。
ディレクトリ階層は考慮してません。

4) 次のバッチファイルを作成しておき html ファイルがあるディレクトリに保存する。

・exesed1.bat
sed "1,9d" %1.html | sed "2,10000d" | sed "s/[^&]* \([^<]*\)\(<.*\)/\1/" >> %2

★商品名が例えば 20行目に存在するのなら 1,9 ではなく 1,19 に変更してください。


・exesed2.bat
sed "s/<TITLE>.*<\/TITLE>/<TITLE>%2<\/TITLE>/" %1 > newpage\%1


○ 作業開始

1) コマンドプロンプトから 作業用 html のあるディレクトリに移動する

2) 置換作成するページを保存するディレクトリ newpage を作成する


3) 対象ファイル一覧を作成
dir *.html > work1.txt

4) 対象ファイル一覧を整形
ファイル名と関係ない行を削除

5) 対象ファイル名だけの一覧を以下のコマンドで整形
sed "s/.\{39\}//" work1.txt > work2.txt

work2.txt に正しくファイル名のみが保存されているか確認する。

6) 商品名だけを抜き出すバッチファイルを作成
echo del shohinmei.txt > makeshohin.bat
sed "s/\(.*\)\.html/cmd \/c exesed1 \1 shohinmei\.txt/" work2.txt >> makeshohin.bat

7) 商品名抽出バッチファイルを実行
makeshohin.bat

これを実行すれば、商品名のみ抜き出したファイル shohinmei.txt というのが作成されているはず

8) html ファイルと 商品名の対応情報を作成する
・エクセルで新規シート作成 work2.txt をエディタで開きA列に貼り付け
・同様に shohinmei.txt を開きB列に貼り付け
・データの存在する行を選択コピーしエディタに貼り付け
page_shohin.csv という名称のCSV形式で保存する。

7) 置換を実行するバッチファイルを作成する
echo rem start > replace.bat
sed "s/\([^,]*\),\(.*\)/cmd \/c exesed2 \1 \2/" page_shohin.csv >> replace.bat

8) 置換実行バッチファイルを実行する
replace.bat

9) newpage というフォルダに同名の置換されたファイルができているはず。
    • good
    • 0

とりあえず、サンプルで1ページを補足したりはできますか

この回答への補足

<HTML>
<HEAD>
<TITLE>■■■■■■■</TITLE>


↓中略


<TD><B><FONT size="-1">商品名:</FONT></B></TD>
<TD><FONT size="-1" color="#666666">●●●●●●</FONT></TD>


※●●の部分を■■のところに書き写したいと考えています。

補足日時:2005/11/09 23:54
    • good
    • 0

それ専門のソフトというのはないと思う(需要がないので)ので自分で作るのが早いかなと思います。


「なでしこ」というソフトがあるのですがこれを使えばカンタンにプログラミングしてソフトを作ることができます。
このソフトのいいところは日本語でプログラミングできることです。
サンプルをくれれば私が作ってもいいですがメールアドレスとか書けないみたいなので^^;
    • good
    • 0
この回答へのお礼

回答ありがとうございました。やはり難しいそうですね。「なでしこ」というソフトの存在を初めて知りました。さっそくマニュアル的な書籍も購入し、挑戦してみようと思います。ぜひサンプルをお送りしたいのですが連絡の手段がないようです。残念です(T_T)

お礼日時:2005/11/09 23:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!