現在「キャンセル」、進捗 80%。工程は全21件中 18件完了。
残りの工程: フェーズ2仕様確認 / フェーズ2サーバ精査 / フェーズ2サーバ設定待ち/接続アカウント待ち
最新報告「情報の整理」(2023-05-09 09:03:56)
A8とFelmatのその日の発生額を出力するツールの作成
↓追加
A8②、afiB、ラココ、アクトレ(plus0502)
バリューコマース、TGアフィリエイト、Janet
↓
スクレイピング(ログイン、データ取得)
↓
データベース格納
↓
出力先ページ作成
↓
出力設定
↓
バリューコマースが取得不安定
API使用テスト
中田
▼ スクレイピングの主な動き:
1.ASPのログインページにアクセス
2.IDとパスワードを入力し、ログインボタンをクリックしてログイン
3.レポートページに移動
4.日付を入力し、レポート出力(CSVダウンロード)
5.値を取得し、データベースのカラムに合わせたデータセット整理
6.データベースに書き込むAPIに投げる
▼ 取得先ASPは8サイト:
a8[https://www.a8.net/
]
accesstrade[https://www.accesstrade.ne.jp/
]
afib[https://www.afi-b.com/
]
felma[https://www.felmat.net/publisher/login
]
janet[https://j-a-net.jp/
]
lacoco[https://ff-tg.com/af/index.php
]
tgafi[https://www.trafficgate.net/affiliate/login.cgi
]
valuecommerce[https://www.valuecommerce.ne.jp/
]
▼ データベース:
CREATE TABLE "log_tb" (
"id" INTEGER NOT NULL,
"account" TEXT,
"log_date" TEXT,
"asp" TEXT,
"reward" TEXT,
"insert_date" TEXT,
PRIMARY KEY("id" AUTOINCREMENT)
);
account→アカウント
log_date→日付
asp→ASP
reward→発生額
insert_date→取得日時
CREATE TABLE "lacoco_sales_tb" (
"id" INTEGER,
"link_name" TEXT NOT NULL,
"price" INTEGER NOT NULL,
"category" TEXT NOT NULL,
"deleted_flg" INTEGER DEFAULT 0,
PRIMARY KEY("id" AUTOINCREMENT)
);
CREATE TABLE "certification_tb" (
"id" INTEGER NOT NULL,
"key" TEXT,
"deleted_flg" INTEGER DEFAULT 0,
PRIMARY KEY("id" AUTOINCREMENT)
);
▼ APIに送信するスクリプト:
headers = {'Content-Type': 'application/json','API-KEY': 'wZZhMHT9SZGr'}
url='https://plustest:plussp@plus-creative.xyz/nakata/asp_data/api/'
data = json.dumps({
"api":"insert",
"account": insert_account,
"log_date": insert_date,
"asp": insert_asp,
"reward": insert_reward,
"insert_date": insert_insert_date,
})
response = requests.post(url, headers=headers, data=data)
▼ トップページ
https://plus-creative.xyz/nakata/asp_data/
要素
・昨日の発生額をテーブル表示 カラム:ASP[アカウント]、発生額、日付[取得日時]
・今月の発生額の合計をテーブル表示 カラム:ASP、今月の発生額合計
・昨日のデータのコピー(テキストエリアに表示しコピーボタンでクリップボードにコピー)
▼ ASP別ページ
https://plus-creative.xyz/nakata/asp_data/filter/?asp=a8
要素
・データをテーブル表示 カラム:日付、アカウント 、発生額、取得日時
・データのコピー(テキストエリアに表示しコピーボタンでクリップボードにコピー)
▼ 年月日指定ページ
年月指定
https://plus-creative.xyz/nakata/asp_data/filter/?date=2023-05
年月日指定
https://plus-creative.xyz/nakata/asp_data/filter/?date=2023-05-01
要素
・データをテーブル表示 カラム:ASP[アカウント]、発生額、日付[取得日時]
・データのコピー(テキストエリアに表示しコピーボタンでクリップボードにコピー)
▼ 年月日とASP指定ページ
https://plus-creative.xyz/nakata/asp_data/filter/?asp=a8&date=2023-05-01
要素
・データをテーブル表示 カラム:日付、発生額、取得日時
・データのコピー(テキストエリアに表示しコピーボタンでクリップボードにコピー)
▼ コピー用フォーマット:
▽トップページ(昨日の発生額)
■日次発生報告【ASP別】
2023/5/7(日)
a8(plus0501):0000000円(月間計:0000000円)
a8(plus02)(plus02):0000000円(月間計:0000000円)
felmat(plus0501):0000000円(月間計:0000000円)
afiB(plus0501):0000000円(月間計:0000000円)
lacoco(pluslacoco):0000000円(月間計:0000000円)
accesstrade(plus0502):0000000円(月間計:0000000円)
valuecommerce(all-advertising@plus-company.jp):0000000円(月間計:0000000円)
TGaffi(plus-tg):0円(月間計:0000000円)
JANet(pp1037642):79,500円(月間計:0000000円)
合計:0000000円(月間計:0000000円)
▽ASP別ページ:日付、アカウント 、発生額、取得日時
■ASP発生報告【a8】
2023/00/00 (plus0501):0000000円
2023/00/00 (plus0501):0000000円
2023/00/00 (plus0501):0000000円
合計:0000000円
▽ 年月日指定ページ:ASP[アカウント]、発生額、日付[取得日時]
■2023/00/00発生報告【a8】
a8(plus0501):0000000円
a8(plus02)(plus02):0000000円
felmat(plus0501):0000000円
afiB(plus0501):0000000円
lacoco(pluslacoco):0000000円
accesstrade(plus0502):0000000円
合計:0000000円
中田
ローカル環境に調査。
(ローカル環境の場合、報酬額取得まで動作するため)
メンテナンス/月跨ぎの不具合対応については、バリューコマースのみ。
1日のみ、カレンダーの日にち設定を変更する。
変更動作調査中
中田
以下エラー内容。
バリューコマースのレポートページでのCSVをダウンロードするボタンが
VPSのseleniumだと押せていない。
原因不明。
アカウント: all-advertising@plus-company.jp
エラー内容: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#report > div:nth-child(4) > div.mt20.el-row.is-align-bottom.el-row--flex > div.el-col.el-col-24.el-col-md-10.el-col-lg-8 > div > div:nth-child(3) > button"}
(Session info: headless chrome=86.0.4240.75)
トレースバック:
Traceback (most recent call last):
File "20230501_slnm_valuecommerce.py", line 120, in
report_btn = driver.find_element(By.CSS_SELECTOR, "#report > div:nth-child(4) > div.mt20.el-row.is-align-bottom.el-row--flex > div.el-col.el-col-24.el-col-md-10.el-col-lg-8 > div > div:nth-child(3) > button")
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"#report > div:nth-child(4) > div.mt20.el-row.is-align-bottom.el-row--flex > div.el-col.el-col-24.el-col-md-10.el-col-lg-8 > div > div:nth-child(3) > button"}
(Session info: headless chrome=86.0.4240.75)
中田
cronの作業内容をメールで送信するように設定。
→エラーの際、発生時わかるように設定。
https://gyazo.com/5dede0d06af13ab8ba3c7bfc7a279166
slnm_valuecommerce.pyのスクレイピングの不具合をこのメールから確認し原因調査。
中田
・Valuecommerceエラー調査中。
・出力先画面調整
中田
フェーズ2の設定待ち。
仕様が決まった上で必要なスクリプトなどを洗い出し、サーバの必要な仕様が決まるので、契約いただく、サーバを精査。
その後、そのサーバで作業開始。
中田
https://lifework.link/task_manage/uploads/20221222185610_asp_data_get.zip
回答し、同梱されている「mome.txt」に設定方法記述しております。
中田
スクリプト自体完成し、
作業サーバでcronに設定して動作の確認もできました。
1)サーバの準備
コチラでテストしたのは以下です。
conohaのVPS
OS:CentOS Linux 8.2.2004
プラン:メモリ 1GB/CPU 2Core
ブートディスク:SSD 100GB
2) インストール
Python 3.6.8
▼ 以下使用するライブラリ
json
requests
selenium
chromedriver_binary
3)ファイルのアップ
https://gyazo.com/c456a09c3b2f3a541195bb82df2a76ba
以下のパスのように「asp_data_get」をアップした場合でファイル構成しています。
/var/www/html/asp_data_get/
asp_data_getに格納されている「asp_get_data.sh」をcron で実行するように設定してください。
4)cronの設定
cron...設定したスケジュールに従って指定されたプログラムを定期的に起動させる。
crontab -e で設定します。
PYTHONIOENCODING = 'utf-8'
LANG=ja_JP.UTF-8
毎時10分に起動。
5)取得データの確認
https://plus-creative.xyz/nakata/asp_data/
plustest/plussp
こちらのサイトで毎日取得した昨日の売上データを確認できます。
中田
https://lifework.link/task_manage/uploads/202211168582_asp_scr.zip
↑スクリプト自体は作成済み
中田
個人で契約しているConoha VPS(FreeBSD 1GB)で
スクレイピングのスクリプトが動作したのを確認しました。
プラン:メモリ 1GB/CPU 2Core
FreeBSD:
4.18.0-193.6.3.el8_2.x86_64
CentOS:
CentOS Linux release 8.2.2004 (Core)
カーネル:
Linux 160-251-6-246 4.18.0-193.6.3.el8_2.x86_64 #1 SMP Wed Jun 10 11:09:32 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
経過をみて良さそうなら、Conoha VPS上での実装可能
トラブルがなければ、
2営業日ほどでサーバ設定可能かと思います。
1.SSH接続設定
2.最低限のセキュリティ
3.Python/スクレイピング環境作成
4.スクレイピング/cron設定
5.テスト
Conoha VPSの初期設定、実装はできますが
運用・メンテナンス等は専門外なので対応が難しい
(サーバのバージョンアップ、セキュリティアップデートなど...)
中田
Mac Miniに設定が不可能だったので、
別の環境を調査。
スクレイピングのスクリプト自体は完了。
出力先のページのベースも設置済み。
https://plus-creative.xyz/nakata/asp_data/
中田
▼作業工程 洗い出し
・Mac Mini 環境作成...0.5
・スクレイピングテスト...0.3
・クーロン設定...0.2
・出力先ページ一覧洗い出し...0.2
・関数作成...0.3
・コーディング...1.0
・テスト...0.5
中田
ログインし、データの取得するスクリプトは作成
出力したデータは仮出力
https://plus-creative.xyz/nakata/asp_data/
plustest/plussp
作成したもの...
1)データの取得(ログイン・スクレイピング)
2)取得したデータの格納(DB)や仮出力先
次のステップ...
3)格納またや出力(新しいデータを書き出す)
4)システムの動作させるトリガーページ
自分がローカルで動かす分には動く状態
これから、ユーザが使うための仕組みを作っていく段階
新しくデータを書き出したり、蓄積する仕組みがなく
この仕組みを動かすためのトリガー部分の作成や出力方法など考えていきます。
バリューコマースが取得不安定なので、別タスクとして、API使用テスト。
良ければこの方法に切り替える
ASPの前日の発生額の出力 - Valuecommerce API対応
https://lifework.link/task_manage/detail/?id=273