9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

N高等学校Advent Calendar 2017

Day 22

N高の授業で行ったスクレイピングをまとめてみた

Last updated at Posted at 2017-12-21

N高に入って9ヶ月が過ぎ、プログラミングでも、自分がしたいことがようやく形になったので、アドバンスカレンダーといういい機会にまとめてみようと思います。
プログラミングはまるっきり初心者なので、大目にみてください。

#スクレイピングをやってみた
N予備校をはじめたあと、とりあえず何か書いてみようと思い、実況パワフルプロ野球というスマホゲームに登場する選手の能力を、全て手打ちでHTML方式で書いてみました。
とりあえず全てのキャラを書き終えたのですが、ソーシャルゲームなので、日々新選手が登場します。
これを一々確認して追記して行くのは面倒だと思い、アプリ攻略を行なっているgamewithの記事から、必要な情報を取ってこようと考えたのが、スクレイピングをしようと思ったきっかけです。

#使用したツール等

  • Node.js
  • バージョンは6.11.1
  • cheerio-httpcil
  • スクレイピングを非常に便利にしてくれました
  • hubot
  • botを使って送信させました

#コード

hubotを起動しているslackに**file>**と送信すると、そのサイトから特定してある部分の内容を、それぞれの形式でファイルにし、自動保存します。

scraping.js
'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');
        });
    });
};
newfire.html
【パワプロアプリ】村雨(むらさめ)の評価とイベントとコンボ | 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の利用規約を確認させていただきました。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?