netkeiba-scraperが2019年6月現在動くかの話(Ubuntu 18.04.2 LTS)

Qiita初投稿です。nekohanahime 別名、船橋海神と申します。好きな言語はZ80とN-BASICです。近頃はPythonをよく書きます。品詞分解(中世古文)や形態素解析(英語)が好きです。[Julius](https://julius.osdn.jp/)で毎時決まった時刻のBBC Worldニュースをテキストに落とし込んで解析したりしています。そのうち公開するかもしれません。
## 本稿の狙い
[netkeiba-scraper](https://github.com/stockedge/netkeiba-scraper)というすばらしいスクリプトが公開されて3年半になります。動かせる方は苦もなく動かせているでしょうが、私このたび入れてみてそれなりに苦労もしました。そこで、2019年6月現在の「この環境で動く」「ここがポイント」「実際にどんな値が得られるか」を共有し、感謝と貢献をできればと思った次第です。この先の自分への備忘でもあります。
## 動作環境
### Ubuntu
```
$ cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
```

### java
```
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
```

### sbt:netkeiba-scraper
```
sbt:netkeiba-scraper> about
[info] This is sbt 1.2.8
[info] The current project is ProjectRef(uri("file:/neko/hanahime/netkeiba-scraper/"), "netkeiba-scraper") 0.1.0-SNAPSHOT
[info] The current project is built against Scala 2.12.7
[info] Available Plugins
[info]  - sbt.ScriptedPlugin
[info]  - sbt.plugins.CorePlugin
[info]  - sbt.plugins.Giter8TemplatePlugin
[info]  - sbt.plugins.IvyPlugin
[info]  - sbt.plugins.JUnitXmlReportPlugin
[info]  - sbt.plugins.JvmPlugin
[info]  - sbt.plugins.SbtPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.12.7
```

## ソースコード書き換え箇所

```
/home/neko/hanahime/netkeiba-scraper/src/main/scala/netkeiba-scraper/Main.scala
```
```
driver.get("https://regist.netkeiba.com/account/?pid=login")
```
1. まず、全体にhttp -> httpsにする。
2. さらに、ログインURLを上記のようにする。
3. build.sbtを修正する。概ね、@guitar_charさんの[記事の通り](https://qiita.com/guitar_char/items/7b7516869689e547c39b)です。

### 有料会員情報の取得は可能か?
上記により可能です(もちろん、IDとパスワードの設定が必要です。Main.scala内に記述箇所があります)。

##大まかな処理所要時間
`sbt "run collecturl"`
157 s
Note: 初回処理で10年分を取得しました。現在は直近1年分を追加上書きする運用です。157秒というのは、その(直近1年分に対する)所要時間です。

`sbt "run scrapehtml"`
3.5 hours
Note: 同上

`sbt "run extract"`
1,092 s

`sbt "run genfeature"`
3.96 days

全体で丸4日間かかるイメージです。

## 計算結果の例
以下は、[stockedge](http://stockedge.hatenablog.com/entry/2016/01/17/180919)さんのものをそのまま or アレンジしてヒアドキュメントで記述しただけです。
### 全馬単勝馬券均一購入回収率
```
$ ./01_allbet.sh 
買い目数        回収率             
----------  ----------------
495737      72.8213346996488
```
### 人気別回収率(穴馬バイアス)
```
$ ./02_popularity.sh 
人気          買い目数        回収率             
----------  ----------  ----------------
1           34660       77.3127524523948
2           34656       80.1061865189291
3           34660       81.1774379688402
4           34643       80.3440810553357
5           34628       81.6469331177082
6           34619       83.5269649614371
7           34528       81.6346153846154
8           34287       79.4823110800013
9           33669       74.5181027057531
10          32592       73.9936180657831
11          31041       72.21159112142  
12          29117       68.3315588831268
13          26499       64.5028114268463
14          23656       49.0826851538721
15          20150       56.0466501240695
16          15695       33.0175215036636
17          3664        20.5594978165939
18          2973        13.3669693911874
```
## まとめ
2019年6月現在、Ubuntu 18.04環境で[netkeiba-scraper](https://github.com/stockedge/netkeiba-scraper)がちゃんと動くんだよということを示しました。また、目安として、一連の処理の所要時間と、計算結果の例を示しました。スピード指数などの有料会員情報もきちんと取得できています。