N高に入って9ヶ月が過ぎ、プログラミングでも、自分がしたいことがようやく形になったので、アドバンスカレンダーといういい機会にまとめてみようと思います。
プログラミングはまるっきり初心者なので、大目にみてください。
#スクレイピングをやってみた
N予備校をはじめたあと、とりあえず何か書いてみようと思い、実況パワフルプロ野球というスマホゲームに登場する選手の能力を、全て手打ちでHTML方式で書いてみました。
とりあえず全てのキャラを書き終えたのですが、ソーシャルゲームなので、日々新選手が登場します。
これを一々確認して追記して行くのは面倒だと思い、アプリ攻略を行なっているgamewithの記事から、必要な情報を取ってこようと考えたのが、スクレイピングをしようと思ったきっかけです。
#使用したツール等
- Node.js
- バージョンは6.11.1
- cheerio-httpcil
- スクレイピングを非常に便利にしてくれました
- hubot
- botを使って送信させました
#コード
hubotを起動しているslackに**file>**と送信すると、そのサイトから特定してある部分の内容を、それぞれの形式でファイルにし、自動保存します。
'use strict';
var client = require('cheerio-httpcli');
const fs = require('fs');
const path = require('path');
module.exports = (robot) => {
robot.hear(/file>/i, (msg) => {
client.fetch('https://xn--odkm0eg.gamewith.jp/article/show/80449', function (err, $, res, body) {
const title = $('title').text();
const table = $('#article-body > div.js-accordion-area.accordion-area > table').html();
const status = $('#article-body > div:nth-child(15) > table').text();
// ファイル名
const file_name = '/newfile.html';
// 書き込み先のパス
// __dirname: 現在実行中のソースコードが格納されているディレクトリパス
// 自分で分かりやすいパスに変更して OK
const file_path = path.join(__dirname + file_name);
// 書き込み内容
const content = (title + table + status)
fs.writeFileSync(file_path, content);
msg.send('File created');
});
});
};
【パワプロアプリ】村雨(むらさめ)の評価とイベントとコンボ | GameWith【パワプロ】<tr><th>レベル</th><th>ボーナス</th></tr><tr><th>Lv.1</th><td>初期評価10(SR),15(PSR)<br>タッグボーナス70%<br>コツイベントボーナス40%</td></tr><tr><th>Lv.5</th><td>初期評価20(SR),25(PSR)</td></tr><tr><th>Lv.10</th><td>タッグボーナス90%</td></tr><tr><th>Lv.15</th><td>コツレベルボーナス2</td></tr><tr><th>Lv.20</th><td>初期評価30(SR),35(PSR)</td></tr><tr><th>Lv.25</th><td>やる気効果アップ75%</td></tr><tr><th>Lv.30</th><td>初期評価40,45(PSR)</td></tr><tr><th>Lv.35</th><td><span style="color:orange;">守備侍</span><br>(技術ボーナス,守備力のコツ)<br>タッグボーナス100%</td></tr><tr><th>Lv.37<br>(SR上限開放時)</th><td>初期評価45</td></tr><tr><th>Lv.40<br>(SR上限開放時)</th><td>初期評価50(SR),55(PSR)</td></tr><tr><th>Lv.42<br>(PSR上限開放時)</th><td>タッグボーナス105%</td></tr><tr><th>Lv.45<br>(SR,PSR上限開放時)</th><td>タッグボーナス110%</td></tr><tr><th>Lv.50<br>(PSR上限開放時)</th><td>タッグボーナス120%</td></tr>評価点7.0点得意練習肩力役割(役割一覧)イベント後イベ(イベキャラ前後一覧)金特ジャストフィット(確定)アイコンタクト(確定)コンボ柳生鞘花楽譜パワフル高校2011投手:ディレイドアーム野手:つるべ打ち(入手できる楽譜一覧)所持コツ送球◯/ レーザービーム/ 守備職人/ 一発逆転/ 守備力
これで newfile.html として、村雨くんの能力をファイルとして書き出してくれます。
#今後取り組みたい点
- cronやHubotcronなどでの定期実行
- URLを自動で設定
#まとめ
心斎橋のTAの人に教えてもらいながらですが、とてもいいものができました。
これからも改良して、もっといいものを作っていきたいです。
記事を書くにあたり実況パワフルプロ野球、GameWithの利用規約を確認させていただきました。