使って走行距離やラップタイムなどを計っています。Connectに保存しています。iPhoneのアプリからメモなども追記できるので、筋トレやその日の調子をメモしたり、シューズの管理などが簡単に出来るのですごく便利です。Connectの情報を自分の見やすい内容にした独自の練習日誌を作ってみます。最近、新しい言語なども勉強したいな~と思っていたので、よい教材となりそうです。機械学習やAIなどで流行っている(もう古いかもしれませんが)らしいので、言語はPythonにします。Webスクレイピングなども簡単にでき向いている言語のようです。簡単に処理の流れをまとめてみました。ConnectのWebページはログイン認証や画面遷移などのブラウザの操作も自動で行います。Chromeを操作していきます。Driverをインストール以下のコマンドでHomebrewからChromeDriverをインストールします。Chromeは別途インストールしてください。Homebrewがインストールされていない場合は、こちらを参考にしてください。chromedriverSeleniumをインストール以下のコマンドを実行します。仮想環境で実装する場合は、仮想環境をアクティブにしてください。Chromeの検証機能(デベロッパーツール)を使ったHTML要素の調べ方ブラウザの操作をする際には、対象ページのHTMLを調べる必要があります。やったらそんなことできるの?という方も大丈夫です。IEやChromeなどには開発用に検証機能が備わっています。Chromeでの検証機能の使い方を簡単に紹介します。デベロッパーツールの起動方法1.サンプルにAppleのホームページを開きます。2.画面の任意の場所を右クリックします。3.表示されたメニューの検証をクリックします。4.画面にデベロッパーツールが開きます。WebページのHTMLを調べる1.デベロッパーツールの左側にあるアイコンをクリック2.調べたい場所をクリックします。するとデベロッパーツールにクリックした場所のコードが選択された状態で表示されます。このようにして属性やCSSなどを調べていきます。driver.quit()コードの解説set_headless()でTrueを設定する事でブラウザを起動せず実行できます。本番では設定するといいと思いますが、最初はFalseを設定して実行するといいと思います。自分が書いたコードで実際にブラウザを操作する様子が見れて楽しいです。opt.set_headless(False)find_element_by_idなどで要素を検索してもページの読み込みが終わっていなくてエラーとなってしますことがあります。sleepで待ち時間を設定しても良いですが、検索する都度実装しなくてはいけませんし、想定より早く読み込めた場合は無駄な時間を待つことになります。implicity_waitは要素が読み込まれるまでの待ち時間を一律に設定することができます。要素を見つけたら処理は進むので多めの時間を設定しておくと良いです。driver.implicitly_wait(20)find_element_by_idは引数に取得したい要素のid属性を指定することで、最初に一致した要素を取得できます。NoSuchElementExceptionが発生します。driver.find_element_by_id([要素のID])「Garminアカウントにサインイン」内の項目はiframe内に配置されていて、何もしないとfind_element_by_idなどでIDやパスワードなどの要素が取得できません。ここでかなりハマりました。iframe要素を検索してswitch_to_frameを呼び出すことで、iframe内の要素を取得することが出来るようになります。driver.switch_to_frame(elm)任意の要素に対してsend_keysを呼び出すことで、テキストフィールドに指定した文字列を入力します。elm.send_keys("PassWord")任意のボタン要素に対してclickを呼び出すことで、ボタンをクリックします。elm.click()ブラウザのウィンドウを全て閉じます。driver.close()は一つのウィンドウだけ閉じます。複数開いている場合はそれぞれ閉じる必要があります。理由がなければ、プロセスの解放漏れを防ぐ為にもquit()で一括に終了させましょう。driverに表示されているのにfind_element_by_idなどを使って要素を取得するとエラーとなり見つからない」ということがよくあります。見えている内容とプログラムで取得している内容が違う時、「なんで!!このページはスクレイピング出来ないの?」とハマってしまうことがよくありました。今回のiframeの場合もそうです。他にもページを読み込んだ後にJavaScriptで加工するようなページやスクロールすると表示されるページなどでは、単純に[表示]->[要素の検索]では取得できません。Driverのスクレイピングは、通常のブラウザ操作で行っている事はたいていの場合、自動化できます。その切り分けとして、取得した内容をログなどに出力し、HTMLコードを確認してみてください。思った要素が無い場合などは、switch_to_frameのようにひと手間加えることで解決するはずです。【Python】loggingを使ってログ出力する方法Commentsこの記事のコメントメールアドレスが公開されることはありません。お気軽にコメントどうぞ。T1700を再インストールした...2019.04.05開発プロフィールこんにちは。岡山県在住、1982年生まれチバシと申します。2017年10月から運動不足解消の為に始めたマラソンの事、プログラミングや好きな事を綴る雑記ブログです。