三流エージェントのCOJメモ帳

コードオブジョーカーのあれこれを書き散らすブログ。

カードランキングの(人力)取得方法の話

この記事ではカードランキングを人力で取得し、表データにする方法を記しました。作業には10分かかりません。

やり方は、

1.公式サイトからデータを取り、テキストファイルにする。
2.テキストファイルを整形してHTMLの表にする。
3.テキストファイルを表計算ソフト用のデータにする。
4.過去のカードランキングデータと合体させる。

という形になります。

本当は自動化したかったんですが、どう考えても自動的にランキングデータを蓄積する仕掛けを作るために勉強する時間より、約2週間に1回、人力で頑張ったほうが使う時間が短いのでやめました。

 ちなみに、今日は2chのスレで1.2ex期から今までのランキングを公開してる人がいました。また、AMAEDAさんのブログ【痔獄・デ・ラ・ロッチャ The 3rd Strike】1.2期のランキングデータが含まれています。この2つを拾って合体すれば、すぐにでも過去から現在までの推移を調べられるようになります。

 

1.公式サイトからデータを取り、テキストファイルにする。

ランキングのページにはカードの順位、種類、属性、バージョン、あとは使用ポイントが記されています。これらのデータはすべてHTMLファイルに直接書かれているので、「ソースの表示」でHTMLのコードを表示すれば簡単にデータを得られます。

ソースを直接テキストファイルとして保存できない時は、「すべて選択」→「メモ帳を起動」→「メモ帳で「貼り付け」」でできます。

私は、google chromeだとなんだかめんどい表示が出たので、Internet Explorerで取得しました。

 

2.テキストファイルを整形してHTMLの表にする。

取得したコードはそのままでは表計算ソフトに入れても表の形になってくれないので整形します。

2-1.一番上から<!-- ranking_data start -->までを消します。

2-2.一番下から<!-- ranking_data end -->までを消します。

2-3.テキストファイルの一番上に

<html>
<body>
<table> 

と書きます。

2-4.テキストファイルの一番下に

</table>
</body>
</html> 

と書きます。

2-5.メモ帳の置換機能を使って、 

class="ranking_number"
class="ranking_card-name" 
class="ranking_card-type"
class="ranking_card-attribution"
class="ranking_card-version" 
class="ranking_card-point"

を消します。

「検索する文字列」にこれらを入力し、「置換後の文字列」は空白のままにしておき「すべて置換する」を選択すると一括して消せます。

2-6.

「検索する文字列」に dd> 、「置換後の文字列」に td> と入力します。
次に「検索する文字列」に dl> 、「置換後の文字列」に tr> と入力します。

これでHTMLファイルの整形は完成です。

2-7.完成したファイルを保存します。今回はOpen Officeのファイルにするのですが、文字コードUnicodeでないと文字化けします。デフォルトだとANSIになっているので変更します。

 

f:id:Skiploom:20150612224842p:plain

 

.テキストファイルを表計算ソフト用のデータにする。

 テキストファイルの拡張子を.txtから.odsに変更します。警告メッセージが出ますが気にせず進めれば変わります。エクセルを使う場合は.xlsか.xlsxだったはずです。

上手く整形していれば、以下のような形で表示されます。

f:id:Skiploom:20150612225535p:plain

A列が順位です。公式ページの1,2,3位は画像ファイルで表示されているため、ここでは抜けています。

使用ポイントのデータも残すつもりなら2.の段階でさらに「使用ポイント」と「pt」も消しておきましょう。

 

4.データを過去のカードランキングデータと合体させる。

ここでは使用ポイントの記録は残しませんが、同様の方法で使用ポイントもまとめておくことができます。

4-1.まず、最新データ側のC列からE列はもう不要ですから消しておきます。次にA列の順位データをカード名のデータの右隣の列(ここではC列)に移動させます。

4-2.最新ランキングの表(B列とC列)を過去のランキングをまとめた表計算ファイルにコピーします。

4-3.Vlookup関数を使って過去ランキング側のカード名をタグにして、最新ランキング側の順位を取得させます。

「=Vlookup(過去データのカード名が入っているセル,最新データ側の表が入る配列【「$A$1:$B$800」といった形で書きます。$も必要です。】,2【2列目という意味。1列目は選べません】,False)

と入力すると、カード名をタグにして順位を調べた結果が表示されます。あとはコピペすれば過去ランキングの隣に最新のランキングが入ります。

4-4.Vlookup関数で得られた新ランキングのデータの列に対して、「コピー」→「形式を選択して貼り付け」→「【数値】のみをチェックする」という手順で関数から数値データにします。

 

これをDOB更新のたびにやっておくと、各カードのランキング推移が記録されるというわけです。なお、更新までの間に新しく追加されたPRカードについては個別に入力が必要です。

新規セットのカードはそのセットを含んだ最初のDOB更新時に最新データ側で「バージョン(ここではE列)」を軸に並び替えてコピペすればいいので、わざわざ個別入力する必要はありません。