全くのJavaScript初心者から学習してきた流れとか、方法とか色々書きます。
作りたい物
ログインが必要なサイトからデータを集めるサービス。
要は、某アーケード音ゲーのスコアツールを作ってみたいということです。
(他スコアツールを参考にしながら作っています。)
やること
- ログイン状態で、任意のJavaScriptを実行→part1でやります
- JavaScriptで欲しいデータのあるHTMLの収集・スコアの抽出→part2以降で
- 抽出したスコアを何かしらの形式で出力しDL→part2以降で
任意のJavaScriptを実行する方法
とりあえずHTMLのヘッダに処理を書けば、そのページでJavaScriptが動くとのこと。
ということで、ヘッダ内にJavaScriptを追加・リンク先のソースファイルを参照し、データ取得処理を動かすことにします。
ヘッダへのJavaScriptの追加
「ブックレット」と言うものを利用します。ブックマークみたいなもので、実行するとJavaScriptが動く、みたいな感じのもの?らしいです。(ほとんど他スコアツールの流用)
書き方は以下の感じで。JavaScriptを書くので、先頭に「javascript:」と書いて後は処理する感じで。(実際は1行にします)
javascript:(function(d,s){
s=d.createElement('script'); // エレメント作成
s.type='text/javascript'; // 属性追加
s.src='sourceURL'; // 実行するソースのURL
d.head.appendChild(s); // ヘッダにエレメント追加
})(document);
単純にURL先のJavaScriptを実行してもらうようにする処理です。
ただし、実行するソースURLですが、データを取得したいサイトがhttpsならば、実行ソースの配置場所もhttpsじゃないとだめらしいです。(引っかかりました)
データ抽出
昔Pythonでスクレイピングやっていたので、Pythonでやりたいなとか思ってましたが、JavaScriptでも意外と簡単にできましたのでそちらでやっていきます。
(プロトタイプはpythonで作ってた)
続きはPart2で