2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PythonでStravaにloginしてGPXデータをゲットする

Last updated at Posted at 2020-12-01

Stravaは誰でも使えるAPIを公開してるけど、ドキュメントを読む限り自分のactivityのGPXデータをダウンロードする機能がないらしい。自分で作成したルートはできるみたい。API機能のstreamを利用することで、緯度経度、時間、心拍数などを個別に取得してGPXを再構築することは可能だが、めんどくさい。
代わりといっちゃなんだけど、Stravaにloginしている状態で自分のactivityのURLにexport_gpxをつけることでブラウザ上からGPXファイルをダウンロードすることができる。こちらのリンクにTCXの方法が乗っているが、GPXでもできた。
それをPythonでできたらいいじゃないという話。APIは使用しません。

方法

mechanizeというライブラリをpipでインストールし、以下のコードのemail, password, activity_idを好きなものに変えて、実行するとGPXファイルを保存する。

import mechanize # pip等でインストールして下さい
br = mechanize.Browser()
response = br.open('https://strava.com/login')
br.select_form(nr=0)
br.form['email'] = 'youremail@email.com'
br.form['password'] = 'passwoooord'
response = br.submit()
activity_id = '12345678'
url = 'https://www.strava.com/activities/' + activity_id + '/export_gpx'
gpx = br.open(url)
gpx = gpx.read().decode('utf-8')
with open(activity_id + '.gpx', mode='w', encoding='utf-8') as f:
    f.write(gpx)

注意点

  • APIには時間あたりのリクエスト制限があるけど、これはないので、まとめてやりたいときはある程度waitかけたほうがいいと思う。
  • 当たり前だが自分のactivityのみ保存できる。有料会員なら他の人のデータも落とせるかもしれないが試してはいない。
  • ほんとは標準ライブラリのrequestsでloginを試みたけどうまくいかなかった。やり方分かる人は教えてほしい。
  • APIを使用してGPXファイルを取得する方法も分かる人は教えてほしい。

参考

https://stackoverrun.com/ja/q/8431259
http://developers.strava.com/docs/reference/

2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?