#概要
スクレイピングの勉強をしていたら、そもそもURLから直接ダウンロードできるファイルはコマンドで簡単にダウンロードできるんじゃねって思ったので自分用メモも兼ねて。ダウンロードしたファイルの解凍にはコマンドライン(コマンドプロンプト)から圧縮・解凍ができる「7-zip」というアプリを使用している。
#やりたいこと
公開されている日経平均のヒストリカルデータを所定の場所に格納したいとする。
上の画像の赤丸をクリックすると日次の日経平均株価がダウンロードできる。
ブラウザでアクセスしてクリックするだけなので簡単だが、ダウンロードフォルダから移動させるところまで自動化する。
上のサイトでは、csvファイルをダウンロードできるが、zipファイルに圧縮されている場合にも対応する。
#設計
最初に設計書を書く。これぐらいなら設計書なんかいらなくて、コマンド調べながら直接コーディングしていけばできるんだけど、設計書書くクセをつけないと後々なにやってるかわからなくなって効率が悪い(戒め)。
WEBからダウンロードして所定フォルダに移動するバッチ
1.ダウンロード
bitsadmin /transfer <URL> <保存先フルパス>
2.解凍
7z.exe x <保存先フルパス> -o<解凍先ディレクトリ>
3.ディレクトリ移動
cd <保存先ディレクトリ>
4.zipファイル削除
del hoge.zip
5.ディレクトリ移動
cd <解凍先ディレクトリ>
6.解凍済ファイル移動
move /Y <最終保存先ディレクトリ>
7.ディレクトリを戻す
cd <ホームディレクトリ>
##bitsadminコマンド
linuxでいうcurlのようなファイルをダウンロードするためのDOSコマンド
bitsadmin /transfer <URL> <ダウンロード先>
###絶対パスの取得
bitsadminで指定するURLは、httpから始まる絶対パスでなければならない。
リンクを右クリックして、リンク先をコピーしたものが絶対パスになっていればよいが、そうでない場合はデベロッパーツールなどを使って、ルートパスを確認し、絶対パスに変換する。
chromeならctrl+shift+Iで切り替わる。
画像のように、階層を下っていき、目的のリンクがはられているところにたどりついたら、
href=/nkave/historical/nikkei_stock_average_daily_jp.csv
となっているところが見るかる。
これだけだと絶対パスにならないので、このサイトのホームURLとつなげて
https://indexes.nikkei.co.jp/nkave/historical/nikkei_stock_average_daily_jp.csv
がダウンロード先のURLとなる。
###保存先
保存先のフォルダはどこでもよいが、bitsadminは、フルパスにしないとエラーとなるので、
C:nikkei_download\hoge.csv
など、ファイル名まで指定する。
##7-zip
ダウンロードするファイルが圧縮されたものだった場合は、コマンドラインから使える圧縮・解凍のフリーソフト7-zipを使用する。
7z.exeはインストールするとデフォルトで、program Fileに入るので、そこにPATHをあらかじめ設定しておく。
7z.exe x <保存先フルパス> -o<解凍先ディレクトリ>
保存先フルパスは先ほどのものと同じ、解凍先のディレクトリを-oの後に記述する。どうせあとで移動するので、解凍先はどこでもよい。
zipファイルは削除したあと、解凍先のディレクトリにcdで移動する。
#解凍済ファイルを移動
move /Y <最終保存先ディレクトリ>
moveコマンドを使って、最後に保存したいディレクトリに移動する。
/Yで自動的に上書きできる。/-Yとすると、上書きするかどうか聞かれる。
##完成したバッチファイル
@echo off
rem 日経平均csvをダウンロードして、所定のフォルダに移動させるバッチファイル
bitsadmin /transfer https://indexes.nikkei.co.jp/nkave/historical/nikkei_stock_average_daily_jp.csv C:\nikkei_download\hoge.csv
rem ディレクトリ移動
cd C:\nikkei_download\
rem解凍済ファイル移動
move /Y C:\nikkei_download\csv
remディレクトリを戻す
cd C:\user\hogehoge
#そして自動化へ
このバッチファイルをコマンドプロンプトがされたときのホームディレクトリにおいておけば、nikkei_downloadと打ち込むだけで、自動的にダウンロードが可能となる。
今後は、PCを起動したとき、もしくは定時で自動的にダウンロードされるようにしたい。