Python入門2018年9月4日URLをコピーしました!プログラミングを学ぶ上で、Excelとブラウザを使う事例として、交通費検索は最適です。今回は、Pythonでやってみました。Excelで書き込むというものをつくります。以前、RPAツールUiPathでつくる記事も書きました。UiPath×Excel。Excelデータを読み取り、ブラウザで交通費検索。無料で使えるRPAツール。EX-ITプログラミング言語Python(パイソン)の初期設定については、こちらを参考にしていただければ。PythonとEXCELマクロ比較。JetBrainsコミュニティエディションなら無料で、かつ十分です。・ライブラリ(外部のアプリのようなもの)をPycharm上でインストールできる・プログラム入力中に候補が出てくる・実行はShift+F10。自動保存してくれる・エラーチェックがしやすいといった特徴があります。(説明、導入をシンプルにするために前の記事では使いませんでしたが、圧倒的にこちらが使いやすいので、前の記事も書き換えるかもです)では、プログラムをつくってみましょう。プログラミングの鉄則の1つは、「小さくつくる」です。Excelで書き込むのうち、2からつくっていきます。Excelがからまないところをつくって、うまくいったら、Excel部分をつくり、それがうまくいたら、繰り返し部分をつくっていきましょう。Chrome用のドライバーをインストールPythonでChromeを動かすには、Seleniumというライブラリ(アプリのようなもの)を使います。ブラウザ別のドライバー(ソフト)が必要です。Chromeなら、ここから最新版をダウンロードして展開しましょう。Chrome展開後つくられたchromedriver.exeをわかりやすい場所に置きます。私は、Cでドライブに、「Python」というフォルダをつくり、そこに置きました。ライブラリ「selenium」をインポートこれ以降、Pycharmへプログラムを書いていきます。ブラウザ用のライブラリを読み込みましょう。webdriverをPycharmへ入力すると、警告が出る場合があります。このライブラリがまだ入っていないからです。その場合、クリックして、ライブラリをインストールしましょう。※画像は別のライブラリですが、このようにインストールできます。Chromeドライバーを読込1で準備した、ドライバーを読み込みます。webdriver.Chrome('c:/python/chromedriver.exe')パス(C:/~)を指定しましょう。「#」ではじまる行はコメントです。わかりやすくするために自分なりに入れましょう。Pycharmだと、Ctrl+/でコメントにできます(もう一度押すと通常のプログラムへ)。Yahoo!路線情報を開くブラウザChromeを開き、Yahoo!路線検索を開きます。路線検索サイトを開くv_browser.get('http://transit.yahoo.co.jp')vが頭についているのは変数(任意に決められる)です。変数.get(‘URL’)で開けます。出発駅の場所を特定する乗換案内で、「出発」へ入力していきます。プログラムでは、その場所を特定しなければいけません。人へ伝えるように、「出発」と書いてあるところと、わかるように伝える必要があります。サイトは、それぞれのパーツに名前がついており、その名前で指定することができます。Chromeだと、その確認がしやすいのです。Windowsだと、ChromeでCtrl+Shift+Iを押してみましょう。右側に、こういったプログラムが表示されます(表示されない場合、「Elements」をクリックしていただければ)。実際はこういったもので表現しているのです。(左側は、「Responsive」に切り替えるとみやすくなります)出発のボックスで右クリックして、[検証]を押すと、その部分のプログラムを表示できます。(1回ではこれができません。このときに、Ctrl+Shift+Iを押すと、右側のウィンドウが閉じてしまうので、右クリックで操作しましょう)出発のボックスは、こういったプログラムです。このidやname、typeなどを使って特定できます。ここでは、idを使いましょう。Pycharmにこう入力します。v_browser.find_element_by_id("sfrom")v_sfromは変数です。ブラウザの変数.find_element_by_id(‘id名’)で、この場所を特定できます。ここがPythonやExcelマクロでブラウザを操作する場合に敷居が高い部分です。RPAだと、ブラウザをクリックしたり、ブラウザで入力したりするとその操作を記録してくれ、そのときにこのidも設定してくれます。いえ、それなりにプログラミングの知識が必要ですが。出発駅を入力する特定したその場所へ、出発駅を入力します。「渋谷」と入力するなら、こう書きましょう。出発駅を入力v_sfrom.send_keys('渋谷')さきほどの場所v_sfromにsend_keysで、キー操作を伝えます。この場合は、’渋谷’という操作です。文字は、’(シングルコーテーション)で囲みましょう。ここでプログラムを実行(PycharmだとShift+F10)し、出発駅に渋谷が入ればOKです。v_browser.find_element_by_id('sto')たとえば、新宿と入力します。到着駅を入力v_sto.send_keys('新宿')これもテストしましょう。エラーの場合は、Pycharmの下にこのように表示されます。最下行に、そのエラー内容があるので、まずそれを読み、上の詳細を読みましょう。検索ボタンをクリック検索ボタンをクリックするには、v_sto.submit()と入力します。どの変数でもよく、ここでは、v_sto(到着)を使いました。その後ろに、.submit()で、検索ボタンを押せます。交通費を読み取る表示された結果の運賃を、最終的には、Excelに書き込みます。この交通費のテキストを認識し、読み取り、確認してみましょう。検証してみると、class=”fare”とあり、ここではこう書きます。v_browser.find_element_by_class_name('fare').text.replace('円','')classで指定されているので、v_browser.find_element_by_class_name(‘fare’)と指定し、テキストを認識するので、v_browser.find_element_by_class_name(‘fare’).text円があるとExcelに貼り付けるときに不都合なので(計算できない)、v_browser.find_element_by_class_name(‘fare’).text.replace(‘円’,”)とします。replaceで、円を空欄に変えました。Pythonの場合、「13,620」というときに、「,(カンマ)」があると、Excelに書き込むときに文字として認識されてしまいます。v_fare.replace(',','')と、もう1回、replaceしました。一度にやろうとするとうまくいかなく。print(v_fare_int)と入れれば、Pycharmの下の部分にその結果が表示されます。この場合は、195です。13,620円は、13620となります。ひとりしごと営業入門オンラインサロン『ひとりしごと研究会』PythonでExcelから読込・Excelへ書き込みここまでできれば、次は、Excelをからませます。ライブラリを読み込み、Excelを開くExcel用のライブラリは、openpyxlです。これをimportで読み込みます。ファイルを、openpyxl.load_workbook(ファイル名)で開きま、シート(アクティブ、今開いている)を変数に入れましょう。後で使いやすくするためです。v_wb.activeこのとき、フォルダ名がusersだと、\ではなく、バックスラッシュでないとエラーが出ます。Pycharmのフォントをこういったものに変えればバックスラッシュになりますので、変えておきましょう。日本語用フォントには、バックスラッシュがないのです。Excelから出発駅・到着駅を読み取る今回の事例では、最終的に2行目から4行目を処理しますが、「小さくつくる」の鉄則どおり、まずは、2行目だけを読み取れるようにしましょう。v_ws['c2'].valueそれぞれ、変数を設定し、シートのセルB2(出発駅)、セルC2(到着駅)を読み取ります。すれば、プログラムでExcelデータを使えます。Excelデータを使うようにするさきほど、v_sfrom.send_keys(‘渋谷’)としていたものを、Excelデータを使うように変更しましょう。Excelの出発駅を入力v_sfrom.send_keys(v_Excelfrom)同様に、到着駅も、変更します。Excelへ書き込み検索して出てきた交通費をE列に書き込みます。ここでは、まずセルE2に書き込むようにしましょう。int(v_fare_int)セルE2へ、検索した交通費からカンマを取り除いたもの(v_fare_int)をintで数値にしたものを入れます。ブラウザを閉じる書き込んだら、ブラウザを閉じましょう。最後にExcelファイルを保存します。RPA交通費ロボ.xlsx')openpyxlライブラリは、Excelファイルを開かずに処理します。最後に保存しなければいけないのです。ここまでが動けば、繰り返し部分をつくります。range(〇,△):です。このあとに、インデント(Tabキー1回)を入れた部分を〇から△ー1まで繰り返します。range(2,5)で2から4で繰り返すということですので気を付けましょう。range(2,v_ws.max_row+1):とすると便利です。シートの最大行をカウントし(4)、それに+1をした5を自動的に設定できます。これまでつくった部分をforの下のインデントに入れましょう。RPA交通費ロボ.xlsx')どこからどこまでを繰り返すかが大事です。ファイル保存は最後の1回でいいので、その手前まで繰り返します。繰り返すように、プログラムを変えていきましょう。セルを指定しているのは、読み取りの部分と書き込みの部分。それぞれ変数i(2から4まで変化する)に切り替えていきます。str(i)と変えましょう。2を3、4・・・・と変化させるので、iにするのですが、Pythonでは、文字ではないiをbとくっつけることはできません。そこで、iを文字列にするstrをつけるのです。int(v_fare_int)これで完成です。Excelからの読み込み、Chromeの操作、Excelの書き込みは応用がきくものですので、Python入門として実際にやってみていただければ。全体のプログラムはこちらです。トライアスロンがあと2戦(9月新潟村上、10川崎)。フルマラソンは、12月の湘南と宮崎。合間に、トレーニングもかねてハーフマラソン(埼玉の毛呂山ハーフ)を入れました。アップダウンもあり、なかなか楽しめそうです。風呂用に、娘が好きなカメさんを買ってから、風呂へすんなり入ります。ご飯もそこそこに「カメさん!」とお風呂へ。嫌がらないで入るから、まあいいかなと。服を着るのはたまに嫌がりますが。ChatGPTでプログラミング学習が変わった。ChatGPTと検索の違い。Desktop)・Python。e-Taxへのログイン自動化の比較。時間とお金のバランスをとり、独立後を楽しんでいただくべく、IT・発信による効率化、時間・お金のノウハウを提供している。『税理士のためのRPA入門』『やってはいけないExcel』など35冊。日課は1日1新、ブログ。