search
LoginSignup
2

More than 5 years have passed since last update.

posted at

updated at

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

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の利用規約を確認させていただきました。

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
What you can do with signing up
2