【プリチャン】ARコーデ管理アプリ作ってみた その5 ~ジュエル1弾のScraping編~
ジュエル1弾が実装されるにあたってプリチャン公式HPもリニューアルされて、その2で使用していたWeb ScrapingのScriptが使用できなくなった。
新弾に備えて今までと同じ形式でGoogle スプレッドシートに自動入力するScriptを作成する。
使用するライブラリの詳細はその2と重複するので割愛する。
リニューアルページへの対応
リニューアル前に比べると(おそらくまだ分類するものが少ないので1ページにまとめて掲載しているので)正直難解な作りになっているが、各アイテムの詳細は以下のような構成になっている。
<div id="Item_ID65002" class="modalWindow">
<div class="modalInner">
<p class="modalClose"></p>
<dl class="modalDetail">
<dt class="itemImage"><img src="images/Item_ID65002.png" alt=""/></dt>
<dd class="itemName">ときめきの<br>ピンクジュエルヘアアクセ</dd>
<dd class="itemCode">JR1-03</dd>
<dd class="itemSpec">
<table>
<tbody>
<tr>
<th scope="row">カラー</th>
<td>ピンク</td>
</tr>
<tr>
<th scope="row">ブランド</th>
<td class="brand"><img src="../images/brand_SH.png" alt=""/></td>
</tr>
<tr>
<th scope="row">タイプ</th>
<td class="type"><img src="../images/type_LO.png" alt=""/></td>
</tr>
<tr>
<th scope="row">レアリティ</th>
<td>JR★★★★</td>
</tr>
<tr>
<th scope="row">いいね☆</th>
<td>750</td>
</tr>
</tbody>
</table>
</dd>
</dl>
</div>
</div><!-- modalWindow End -->
ParserというGASのライブラリを使用して上記の部分を取得する。
var item_lists = Parser.data(html)
.from('<div id="Item_')
.to('</div><!-- modalWindow End -->')
.iterate();
iterate()で取得した各要素ごとに必要な情報を配列に格納する。
var all_array = [];//スプレに書き込む値。2重配列
//ラベルを入力
var label_array = ["id","rarity","name1","name2","image_num",
"rating","database_name","group_name"];
for(var i = 0; i < item_lists.length; i++){
//コーデID
var id = Parser.data(item_lists[i])
.from('<dd class="itemCode">').to('</dd>')
.build();
//画像の番号
var image_num = Parser.data(item_lists[i])
.from('ID')
.to('" class="modalWindow">')
.build();
//コーデ名 先頭部分はコーデ1式の識別に使用する
var name_split = Parser.data(item_lists[i])
.from('<dd class="itemName">')
.to('</dd>')
.build().split("<br>");
var name1 = name_split[0];
var name2 = name_split[1];
if(name2 == undefined) name2 = '';
//アイテムのレアリティ
var rarity = Parser.data(item_lists[i])
.from('レアリティ').to('</td>')
.build()
.replace(/\r?\n?★?/g, '')//改行コードを消す
.replace('</th><td>','');//余計な部分を消す
//Vuforiaの検出スコア(独自の値なのでスクレイピングできない)
var rating = 0;//暫定的に0とする
//Vuforiaのデータベース名(IDの-より前の部分で判断)
var database_name = id.split('-')[0];
//アイテム名の先頭で判断
var group_name = name1;
var detail_array = [];
detail_array.push(id);
detail_array.push(rarity);
detail_array.push(name1);
detail_array.push(name2);
detail_array.push(image_num);
detail_array.push(rating);
detail_array.push(database_name);
all_array.push(detail_array);
}
all_arrayに全ての値を格納し、スプレに値を反映させる。
//今回はScrapingの対象のURLを名前にしてシートを新規作成する
var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(url);
//値をスプレに書き込む。
sheet.getRange(1,1,all_array.length,8).setValues(all_array);
ジュエル1弾で変化した部分
以下の部分に変更がみられる。
・レアリティ
・KRが消滅
・JRとHRが追加
・JR,HR,PR,SR,R,Nの6段階になった。
・コーデIDの「-」より前の部分が若干の変化
JR1:ジュエル1弾とは別のIDが振られている
J1:ジュエル1弾
CH:新ブランドキュティーハピネス
SH:スイートハニー(IDはジュエル弾前から続投)
PB:プレゼントボックス
分類とか
「みらいコレクション」「まりあコレクション」と別れているが「みらいコレクション ファントミラージュチャンネル」という項目もあって分類をどうするかの方向性が定まらない。ので、実機を触ってから色々考えようかと思う。プリッッカソンの課題になるかもしれない。
余談
リニューアルページが完全にスマホ用になってPCだととても見れたものじゃないのでどうにかしてください!
あと画像がまた8bit pngに戻ってしまって悲しいです。
Session Continues...
この記事が気に入ったらサポートをしてみませんか?