pythonでPOS+foodレジ(ポスタスフード)の管理画面から売上CSVをダウンロードする|自作する業務自動化ツール
こんにちは、しゃちくです。
POS+foodの管理画面に毎日アクセスして、売上などをチェックするのは結構大変ではないでしょうか。代わりにpythonに見に行かせて、売上データのCSVをダウンロードさせましょう。あなたは保存されたCSVを開くだけで売上を把握できます。把握した売上データをもとに分析や販促など人間にしか出来ない仕事に注力しましょう。
spyderの使い方が分からない方や、エラーが出る方は下のボタンをクリックしてください。
spyderの使い方(ファイル作成・プログラム実行など)が分からない方はクリック
spiderのインストールがまだの方
「Anaconda Powershell Prompt」や「spyder」が分からない方は「Anacondaをインストール|pythonが動く環境を構築しよう」をご覧ください。
新しいファイルを作成する
画面上部のツールバーの中の「用紙」のようなアイコンをクリックすると作成できます。
ショートカットキー Ctrl+N でも作成することが可能です。
プログラムを全部実行する
画面上部のツールバーの中の「再生ボタン」のようなアイコンをクリックするとプログラムが動きます。書いてあるプログラムを全て実行します。
ショートカットキー F5 でも実行することが可能です。
プログラムを一部実行する
画面上部のツールバーの中の「カーソル」のようなアイコンをクリックすると、カーソルを置いている行のプログラムだけが実行されます。何行かを範囲選択している場合は、選択している行のプログラムだけが実行されます。
ショートカットキー F9 でも実行することが可能です。
ModuleNotFoundError が出る方はクリック
「ライブラリがインストールされてないですよ」というエラー文です。ライブラリをインストールして解消しましょう。インストールはとても簡単です。「Anaconda Powershell Prompt」を新たに立ち上げ、適切なコマンドを貼り付けてエンターを押すだけです。
ModuleNotFoundErrorに続く文字によって、コマンドが異なりますので、エラー文をよく見て適切なコマンドを貼り付けてください。
ModuleNotFoundError: No module named 'webdriver_manager'
pip install webdriver-manager
「Anaconda Powershell Prompt」を新しく立ち上げます。そこに上記コードをコピーしてエンターを押します。必要なライブラリが自動でインストールされるので、終わるまで待ちます。
ModuleNotFoundError: No module named 'selenium'
pip install selenium
「Anaconda Powershell Prompt」を新しく立ち上げます。そこに上記コードをコピーしてエンターを押します。必要なライブラリが自動でインストールされるので、終わるまで待ちます。
POS+foodの管理画面にログインする
早速プログラムを書いていきますので、spyderを立ち上げましょう。spiderが立ち上がったら、新しいファイルを作成します。
spiderの使い方を知りたい場合や、エラーが出る方はコチラを参考にしてください。
POS+foodの管理画面にログインする全コードです。コードだけ欲しい方はこちらをコピペしてください。
#webを自動操作するライブラリ、seleniumを読み込む
from selenium import webdriver
#ブラウザのバージョンの違いを是正する、webdriver_managerを読み込む
from webdriver_manager.chrome import ChromeDriverManager
#プログラムを一瞬止めるためのライブラリ
import time
#ブラウザを立ち上げる
driver = webdriver.Chrome(ChromeDriverManager().install())
#ログイン画面にアクセスする
driver.get('https://g-01.postas.asia/')
#相手のサーバーに負荷がかかるので1秒休む
time.sleep(1)
#「企業コードに***を入力する」
driver.find_element_by_id('company-code').send_keys("***")
#「担当者コードに***を入力する」
driver.find_element_by_id('user-code').send_keys("***")
#「パスワードに***を入力する」
driver.find_element_by_id('password').send_keys("***")
#ログインボタンをクリックする
driver.find_element_by_id('login').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
POS+foodのログイン画面にアクセスする
#webを自動操作するライブラリ、seleniumを読み込む
from selenium import webdriver
#ブラウザのバージョンの違いを是正する、webdriver_managerを読み込む
from webdriver_manager.chrome import ChromeDriverManager
#プログラムを一瞬止めるためのライブラリ
import time
#ブラウザを立ち上げる
driver = webdriver.Chrome(ChromeDriverManager().install())
#ログイン画面にアクセスする
driver.get('https://g-01.postas.asia/')
#相手のサーバーに負荷がかかるので1秒休む
time.sleep(1)
エディターに上記コードを貼り付けて、プログラムを実行します。自動でブラウザが立ち上がりPOS+foodのログイン画面にアクセスできていると思います。
アカウント情報を入力する
「企業コード」「担当者コード」「パスワード」欄にアカウント情報を入力させます。プログラムに入力させるには、HTML上の住所を指定する必要がありますので、検証ツールを使って調べましょう。
F12を押し、検証ツールを立ち上げ、HTMLを表示させます。
①カーソルのようなマークをクリック
②「企業コード」欄をクリックする
③青く色が変わった所が「企業コード」欄のHTML住所です
青く色が変わった場所の中に【id="company-code"】という表示があります。今回はこれをプログラムで指定します。同じように「担当者コード」の住所を調べると【id="user-code"】、「パスワード」は【id="password"】ということが分かります。
#「企業コードに***を入力する」
driver.find_element_by_id('company-code').send_keys("***")
#「担当者コードに***を入力する」
driver.find_element_by_id('user-code').send_keys("***")
#「パスワードに***を入力する」
driver.find_element_by_id('password').send_keys("***")
上記コードを先程のコードの下に貼り付けます。「***」はあなたのお店に割り当てられたものに書き換えます。「***」を書き換えて上記コードを実行すると、それぞれの欄に入力がされたと思います。
ログインボタンをクリックする
次はログインボタンをクリックさせます。ログインボタンのHTML住所を調べると【id="login"】ということが分かります。
#ログインボタンをクリックする
driver.find_element_by_id('login').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
上記コードを先程のコードの下に貼り付け、実行すると、ログインボタンがクリックされて管理画面にログインできたと思います。
売上データのCSVをダウンロードする
[売上管理] → [帳票管理] → [売上実績] と進むと、売上などの情報をCSVでダウンロードできるページになります。ここからCSVをダウンロードさせ、PCに保存させましょう。
ログイン後にCSVをダウンロードする全コードです。コードだけ欲しい方はこちらをコピペしてください。
#売上実績のページににアクセス
driver.get('https://g-01.postas.asia/sales_results/C_sales_results/sales_results_list')
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#検索ボタンをクリック
driver.find_element_by_id('search').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#CSVボタンをクリックする
driver.find_element_by_xpath('/html/body/div[1]/div/form[1]/div[4]/div[2]/div[2]/div[2]/div[1]/button[1]').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#ブラウザを閉じる
driver.quit()
CSVダウンロードページにアクセスする
#売上実績のページにアクセス
driver.get('https://g-01.postas.asia/sales_results/C_sales_results/sales_results_list')
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
上記コードを貼り付け、実行すると[売上実績] のページにアクセスできたと思います。
検索ボタンを押す
検索ボタンをクリックすると、売上データとともに、CSVをダウンロードするボタンが出てきます。
検証ツールを立ち上げ、検索ボタンのHTML上の住所を調べると、【id="search"】であることが分かります。
#検索ボタンをクリック
driver.find_element_by_id('search').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
上記を実行すると検索ボタンが押されます。
CSVボタンを押す
出てきたCSVボタンを押しましょう
CSVボタンのHTML住所を調べると、今までのように【id=】のような記述はありません。こういう時は xpath で指定します。
F12で検証ツールを開き、xpathを調べましょう。
①カーソルのようなマークをクリック
②CSVボタンをクリックし、HTML住所を特定
③青くなっている枠内を右クリック
④Copyにカーソルを合わせる
⑤Copy full XPath をクリック
こうするとクリップボードにxpathがコピーされた状態になります。
コピーしたxpathをプログラムで指定し、クリックさせます。
#CSVボタンをクリックする
driver.find_element_by_xpath('/html/body/div[1]/div/form[1]/div[4]/div[2]/div[2]/div[2]/div[1]/button[1]').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#ブラウザを閉じる
driver.quit()
上記を実行するとCSVボタンが押され、CSVがダウンロードされたと思います。
目的は達成したので、最後にブラウザを閉じます。
全コード
自動で、POS+foodにログインし、CSVをダウンロードさせるための、全コードです。
#webを自動操作するライブラリ、seleniumを読み込む
from selenium import webdriver
#ブラウザのバージョンの違いを是正する、webdriver_managerを読み込む
from webdriver_manager.chrome import ChromeDriverManager
#プログラムを一瞬止めるためのライブラリ
import time
#ブラウザを立ち上げる
driver = webdriver.Chrome(ChromeDriverManager().install())
#ログイン画面にアクセスする
driver.get('https://g-01.postas.asia/')
#相手のサーバーに負荷がかかるので1秒休む
time.sleep(1)
#「企業コードに***を入力する」
driver.find_element_by_id('company-code').send_keys("***")
#「担当者コードに***を入力する」
driver.find_element_by_id('user-code').send_keys("***")
#「パスワードに***を入力する」
driver.find_element_by_id('password').send_keys("***")
#ログインボタンをクリックする
driver.find_element_by_id('login').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#売上実績のページににアクセス
driver.get('https://g-01.postas.asia/sales_results/C_sales_results/sales_results_list')
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#検索ボタンをクリック
driver.find_element_by_id('search').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#CSVボタンをクリックする
driver.find_element_by_xpath('/html/body/div[1]/div/form[1]/div[4]/div[2]/div[2]/div[2]/div[1]/button[1]').click()
#相手のサーバーに負荷がかかるので5秒休む
time.sleep(5)
#ブラウザを閉じる
driver.quit()
ひとり親家庭・働く女性支援!MamaEduプロジェクト!
ひとり親家庭の方々に向けた、Webスキルを身に着けることができる「インターネット・アカデミー」をご紹介します。インターネット・アカデミーは、1995年に開校した日本初のWeb専門スクールで、Webデザイン、Webマーケティング、プログラミング、動画編集など、現場で活躍できるIT人材の育成を行っています。3万人以上の卒業生が活躍しており、2022年にはTBSテレビ「news23」のSDGs特集でも紹介されるなど、注目を集めています。
特に、ひとり親向けの給付金制度を活用した場合、最大で193万円受給しながら勉強ができるという大変お得なシステムがあります。Webデザイン、Webマーケティング、プログラミングなど、15コース以上の給付金対象のコースがあり、国の給付金を活用して学べる点が魅力です。また、キャリアプロデューサーによる就職支援や、女性向けの「mamaeduプロジェクト」など、ひとり親家庭の方々をサポートする取り組みも充実しています。
Webスキルを身に着けることによって、将来的には自分自身のキャリアアップにもつながりますし、求人市場でも高い需要があります。是非、インターネット・アカデミーを通じて、新しいスキルを身に着け、将来の夢を実現してみてはいかがでしょうか。
投稿
- SQL基礎知識〜データ型編〜 (2021年11月28日)
- SQL基礎知識〜PRIMARY KEY編〜 (2021年11月28日)
- SQL基礎知識〜テーブルの制約編〜 (2021年11月29日)
- SQL基礎知識〜DROP・DELETE・TRUNCATE編〜 (2022年4月2日)
- Anacondaをインストール|pythonが動く環境を構築しよう (2022年4月4日)
- Spyder5の日本語化|pythonを書きやすくしよう (2022年4月10日)
- pythonでPOS+foodレジ(ポスタスフード)の管理画面から売上CSVをダウンロードする|自作する業務自動化ツール (2022年5月29日)
- Pythonでファイルやフォルダを自動でバックアップする方法|自作する業務自動化ツール (2022年7月17日)
- PythonのrequestsライブラリでHTTPリクエストを送信する方法:基本的な使い方からファイルのアップロード、セッションの使用まで (2023年3月18日)
- Pythonのrequestsライブラリで学ぶHTTPエラー処理の基本 (2023年3月19日)
- CSVファイルをPandasで読み込もう!read_csvの使い方とオプション解説 (2023年3月21日)
- データ集計を簡単に!Pandasのgroupby()メソッドの活用法 (2023年3月22日)
- Python Lambda関数入門:便利な書き方と使い方 (2023年3月23日)