中田のタスク管理

タスクの詳細

キャンセル
ASPの発生額の出力ツール
依頼者 EIjiさん
進捗率
85.714285714286%  作業状況
現在の作業 メンテナンス/月跨ぎの不具合対応
作業開始予定日
タスクタイプ 通常
タグ ASP,ツール
現状サマリー

現在「キャンセル」、進捗 80%。工程は全21件中 18件完了。

残りの工程: フェーズ2仕様確認 / フェーズ2サーバ精査 / フェーズ2サーバ設定待ち/接続アカウント待ち

最新報告「情報の整理」(2023-05-09 09:03:56)

タスクの詳細情報・説明 別ウィンドウで表示

依頼の詳細

A8とFelmatのその日の発生額を出力するツールの作成
↓追加
A8②、afiB、ラココ、アクトレ(plus0502)
バリューコマース、TGアフィリエイト、Janet

スクレイピング(ログイン、データ取得)

データベース格納

出力先ページ作成

出力設定

バリューコマースが取得不安定
API使用テスト

対応者メモ・コメント 別ウィンドウで表示


作業工程・チェックリスト

現在の進捗:18/21 85.714285714286%
Python環境作成
A8ログイン スクリプト作成
Felmatログイン スクリプト作成
A8レポートページ データ取得スクリプト作成
Felmatレポートページ データ取得スクリプト作成
データ格納スクリプト
データ出力ページ
レンタルサーバ・環境の調査
VPSに設定
A8②
afiB
ラココ
アクトレ(plus0502)
バリューコマース
TGアフィリエイト
Janet
フェーズ2仕様確認
フェーズ2サーバ精査
フェーズ2サーバ設定待ち/接続アカウント待ち
Valuecommerceエラー対応
メンテナンス/月跨ぎの不具合対応

コメント コメントフォーム

中田

バリューコマースが取得不安定なので、別タスクとして、API使用テスト。
良ければこの方法に切り替える

ASPの前日の発生額の出力 - Valuecommerce API対応
https://lifework.link/task_manage/detail/?id=273

コメントのURLコピー 2023-05-23 08:18:01
中田
情報の整理

▼ スクレイピングの主な動き:
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)

print(response.content)


▼ トップページ
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円

コメントのURLコピー 2023-05-09 09:03:56
中田
メンテナンス/月跨ぎの不具合対応

ローカル環境に調査。
(ローカル環境の場合、報酬額取得まで動作するため)
メンテナンス/月跨ぎの不具合対応については、バリューコマースのみ。

1日のみ、カレンダーの日にち設定を変更する。

変更動作調査中

コメントのURLコピー 2023-05-01 17:46:50
中田
エラー原因

以下エラー内容。
バリューコマースのレポートページでの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)

コメントのURLコピー 2023-05-01 17:45:04
中田

cronの作業内容をメールで送信するように設定。

→エラーの際、発生時わかるように設定。
https://gyazo.com/5dede0d06af13ab8ba3c7bfc7a279166


slnm_valuecommerce.pyのスクレイピングの不具合をこのメールから確認し原因調査。

コメントのURLコピー 2023-04-20 21:23:36
中田

・Valuecommerceエラー調査中。
・出力先画面調整

コメントのURLコピー 2023-03-20 09:10:05
中田

フェーズ2の設定待ち。
仕様が決まった上で必要なスクリプトなどを洗い出し、サーバの必要な仕様が決まるので、契約いただく、サーバを精査。

その後、そのサーバで作業開始。

コメントのURLコピー 2023-02-28 10:25:34
中田

https://lifework.link/task_manage/uploads/20221222185610_asp_data_get.zip

回答し、同梱されている「mome.txt」に設定方法記述しております。

コメントのURLコピー 2022-12-22 18:56:46
中田

スクリプト自体完成し、
作業サーバで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 * * * * /usr/bin/sh /var/www/html/asp_data_get/asp_data_get.sh

毎時10分に起動。

5)取得データの確認
https://plus-creative.xyz/nakata/asp_data/

plustest/plussp

こちらのサイトで毎日取得した昨日の売上データを確認できます。

コメントのURLコピー 2022-12-22 18:55:37
中田
スクリプト

https://lifework.link/task_manage/uploads/202211168582_asp_scr.zip

↑スクリプト自体は作成済み

コメントのURLコピー 2022-10-27 20:58:26
中田

個人で契約している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の初期設定、実装はできますが
運用・メンテナンス等は専門外なので対応が難しい
(サーバのバージョンアップ、セキュリティアップデートなど...)

コメントのURLコピー 2022-10-27 17:31:28
中田

Mac Miniに設定が不可能だったので、
別の環境を調査。

スクレイピングのスクリプト自体は完了。
出力先のページのベースも設置済み。
https://plus-creative.xyz/nakata/asp_data/

コメントのURLコピー 2022-10-20 10:18:09
中田
仕様変更による再度精査

▼作業工程 洗い出し

・Mac Mini 環境作成...0.5
・スクレイピングテスト...0.3
・クーロン設定...0.2

・出力先ページ一覧洗い出し...0.2
・関数作成...0.3
・コーディング...1.0
・テスト...0.5

コメントのURLコピー 2022-10-06 13:09:49
中田

ログインし、データの取得するスクリプトは作成
出力したデータは仮出力

https://plus-creative.xyz/nakata/asp_data/

plustest/plussp

作成したもの...
1)データの取得(ログイン・スクレイピング)
2)取得したデータの格納(DB)や仮出力先

次のステップ...
3)格納またや出力(新しいデータを書き出す)
4)システムの動作させるトリガーページ

自分がローカルで動かす分には動く状態
これから、ユーザが使うための仕組みを作っていく段階

新しくデータを書き出したり、蓄積する仕組みがなく
この仕組みを動かすためのトリガー部分の作成や出力方法など考えていきます。

コメントのURLコピー 2022-10-04 19:28:30

コメントフォーム

名前
タイトル
コメント
    ファイルのアップロード
    (このエリアにドロップしてください)
    ※ ファイルのURLはコメント内に含めてください。
    Markdown記法が使用可能
    # 見出し h1
    ## 見出し h2
    ### 見出し h3
    #### 見出し h4
    ##### 見出し h5
    
    **太字**
    
    水平線
    ---
    
    > 引用テキスト
    > 引用テキスト 
    
    ```
    コードの表示(ブロック)
    コードの表示(ブロック)
    コードの表示(ブロック)
    ```
    
    * リスト
    * リスト
    * リスト
    
    0. 番号リスト
    0. 番号リスト