目的
JEPXのスポットデータをダウンロードする。なお、本記事は、2024年7月31日現在のもので、JEPXの仕様が変わった場合は使えません。
はじめに
JEPXのデータは、ダウンロードする際にモーダル表示されることと、POSTされるとき別タブで開くのでChromeの開発者機能を使ってもコードが追いにくいです。ちょっと小技的なところを駆使してcurlでダウンロードできるようにしました。
JEPXのダウンロード用のURLを解析
手前味噌的なところはありますが、Chromeの開発者ツールを使います。スポット価格は下図のようになっていますので、まずは、データダウンロードボタンを押して、モーダル表示されるのを確認します。
モーダル表示
上図で、データダウンロードを押すと下図のようなモーダル表示となります。ここで、データダウンロードを押すと、別タブにてダウンロードが始まります。
開発者ツールで開く
該当するコードだけ抜き取ると次の部分です。
<form method="post" target="_blank" action="/_download.php?timestamp=1722431019171">
<label class="modal-box__content__label" for="download-file">年度選択</label>
<input type="hidden" name="dir" value="spot_summary">
<select class="modal-box__content__select" name="file" id="dl-select--spot_summary">
<option value="spot_summary_2024.csv">2024年度</option>
<option value="spot_summary_2023.csv">2023年度</option>
<option value="spot_summary_2022.csv">2022年度</option>
<option value="spot_summary_2021.csv">2021年度</option>
<option value="spot_summary_2020.csv">2020年度</option>
<option value="spot_summary_2019.csv">2019年度</option>
<option value="spot_summary_2018.csv">2018年度</option>
<option value="spot_summary_2017.csv">2017年度</option>
<option value="spot_summary_2016.csv">2016年度</option>
<option value="spot_summary_2015.csv">2015年度</option>
<option value="spot_summary_2014.csv">2014年度</option>
<option value="spot_summary_2013.csv">2013年度</option>
<option value="spot_summary_2012.csv">2012年度</option>
<option value="spot_summary_2011.csv">2011年度</option>
<option value="spot_summary_2010.csv">2010年度</option>
<option value="spot_summary_2009.csv">2009年度</option>
<option value="spot_summary_2008.csv">2008年度</option>
<option value="spot_summary_2007.csv">2007年度</option>
<option value="spot_summary_2006.csv">2006年度</option>
<option value="spot_summary_2005.csv">2005年度</option>
</select>
<button class="dl-button" type="submit">
<span class="dl-button__txt">データダウンロード</span>
</button>
</form>
POSTしているのですが、dirとnameという属性をヘッダーにつける必要がありそうです。
よくわからないので、Chrome上で、target="_blank" の部分を削除して、実際にデータをダウンロードしてみます。
データをダウンロードする際、ネットワークタブを見ると次のようになっていました。
環境に合わせて、
- Copy as cURL(cmd)<--今回はこれを選択
- Copy as cURL(bash)
- Copy as PowerShell
いろいろ環境に応じてUserAgentの情報とか付加されますが必要なのは以下のものだと思います。
curl "https://www.jepx.jp/_download.php?timestamp=1722431019171" ^
-H "content-type: application/x-www-form-urlencoded" ^
-H "referer: https://www.jepx.jp/electricpower/market-data/spot/" ^
--data-raw "dir=spot_summary&file=spot_summary_2024.csv"
またタイムスタンプは、jsファイルを確認いただければわかりますが、
(new Date()).getime()
となっているので、都度生成は必要ないと思いますが、状況に応じて生成してもらえれば良いかなと思います。
免責事項
JEPXでは、スクレイピング等を禁止している可能性があります。試行する際も含めてホームページの情報を確認の上実施していただくとともに、本コードにより損害を受けたあるいは与えた場合であっても、当方は一切の責任を負わないものとします。
所感
需要があるかはわからない。
REFERENCEs