HTMLソースの、特定の行に記述がある「文字」(商品名)をHTMLのタイトル<TITLE>●●</TITLE>の部分に移動させる便利な方法はありませんでしょうか?
ネットショップを運営しており、商品数が5000個ほどあります。
1ページに1商品の作りでページを作っており、そのページのタイトルに、商品名を入れたいと考えました。
しかし、それを一つ一つ行っていたら膨大な時間がかかるので、何か便利なソフトがないかと思いご相談させていただきました。
タイトルの行数、商品名の記述がある行数は、全ページ共通です。手作業でやれば、それほど難しい作業ではなく、商品名のところをコピーして、<TITLE>●●</TITLE>の●●の部分に貼り付けていくだけの単純作業です。
置き換えソフトなども考え、いろいろ考えましたが、ギブアップしました。
一括で、特定の位置にある語句を、特定の位置に移動できるソフト、もしくは方法があるようでしたら、教えてください。
よろしくお願いします。
No.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:57No.4
- 回答日時:
書き込んだら妙な形に変換されちゃっています。
(^^;exesed1.bat はこちらに変更してください。
・exesed1.bat
sed "1,9d" %1.html | sed "2,10000d" | sed "s/[^&]*\([^<]*\)\(<.*\)/\1/" >> %2
★商品名が例えば 20行目に存在するのなら 1,9 ではなく 1,19 に変更してください。
No.3
- 回答日時:
面白そうなので参戦します。
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 というフォルダに同名の置換されたファイルができているはず。
No.1
- 回答日時:
それ専門のソフトというのはないと思う(需要がないので)ので自分で作るのが早いかなと思います。
「なでしこ」というソフトがあるのですがこれを使えばカンタンにプログラミングしてソフトを作ることができます。
このソフトのいいところは日本語でプログラミングできることです。
サンプルをくれれば私が作ってもいいですがメールアドレスとか書けないみたいなので^^;
回答ありがとうございました。やはり難しいそうですね。「なでしこ」というソフトの存在を初めて知りました。さっそくマニュアル的な書籍も購入し、挑戦してみようと思います。ぜひサンプルをお送りしたいのですが連絡の手段がないようです。残念です(T_T)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) パイソンでのプログラミングについて 3 2022/08/11 20:31
- Amazon 新規でAmazon商品ページ作成方法について 1 2022/03/28 00:22
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- 食べ物・食材 カルディにお詳しい方への質問 2 2023/01/10 21:05
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- ドライブ・ストレージ 古い外付けHDDから新品外付けHDDへのデータ移行方法 (Mac) 2 2022/12/11 02:01
- その他(ビジネススキル・経営ノウハウ) クラウドファウンディングによる新製品の販売支援要求。「あれ?この商品、もう完成品じゃね?」という疑問 2 2022/08/22 12:32
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
バッチファイルでサーバーのフ...
-
Thunderbirdで社内共有フォルダ...
-
binフォルダーとは?
-
パソコンのフォルダー内のファ...
-
コマンドプロンプトでフォルダ...
-
virualboxで仮想マシンフォルダ...
-
画像・動画データを日付毎のフ...
-
拡張子が異なりファイル名が同...
-
PCのアプリケーションを別のPC...
-
1つのフォルダの中にflacとmp3...
-
ビルダーを使ってますがパソコ...
-
大量のファイルを日時を参考に...
-
ファイルのサイズを0にする or ...
-
複数のフォルダからファイルを...
-
フォルダ監視するフリーソフト...
-
一括でフォルダと同じ名前にフ...
-
一定のファイル数ごとにフォル...
-
スナップインを作成できません...
-
2つのフォルダ内(サブフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
一太郎がイントラで開けません...
-
PCのアプリケーションを別のPC...
-
パソコンのフォルダー内のファ...
-
binフォルダーとは?
-
バッチファイルでサーバーのフ...
-
virualboxで仮想マシンフォルダ...
-
一括でフォルダと同じ名前にフ...
-
コマンドプロンプトでフォルダ...
-
Thunderbirdで社内共有フォルダ...
-
win10の「フォト」で、「次へ」...
-
ビルダーを使ってますがパソコ...
-
ファイルのサイズを0にする or ...
-
名前の変更ができない動画ファイル
-
同名のフォルダを検索・削除したい
-
「ファイルがオープンできませ...
-
一定のファイル数ごとにフォル...
-
特定フォルダ内のファイルを自...
-
複数のフォルダに複数のファイ...
-
拡張子が異なりファイル名が同...
おすすめ情報