SSブログ

nuroモバイルのデータ使用量をpythonで自動取得する [Network]

今月からnuroモバイルのSIM(データ+SMS )を使い始めたのだが、会員ウェブサイトでデータ使用量の履歴が3日分しか参照出来ない。メインで使用しているIIJmioでは30日分の履歴を参照出来るのに比べると如何せん物足りない。

nuromobile

幸いな事に使用量を参照する上記ページが比較的単純な作りになっているので、python で自動取得するスクリプトを作成、自宅サーバーの cron で毎日自動実行させてログを取る事にした。

まずは必要なパッケージをインストール
$ pip3 install requets
$ pip3 install beautifulsoup4

以下の内容を getnurolog.py 等のファイル名で保存(赤字部分は契約内容に書き換え)
#! /usr/local/bin/python3
import requests, datetime
from bs4 import BeautifulSoup

url = "https://mobile.nuro.jp/mobile_contract/u/login/"

# ログインセッションを開始(クッキーが取得される)
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += "HIGH:!DH:!aNULL"
s = requests.Session()
s.get(url)

# ログイン用のPOSTデータを作成
d = dict()
d['loginid'] = 'ハイフン無し電話番号'
d['password'] = 'パスワード'
d['showMenu'] = '%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3'

# ログインフォームを送信し、レスポンスをパーサーに格納
r = requests.Request('POST',url,data=d)
rp = r.prepare()
html = s.send(rp)
soup = BeautifulSoup(html.content, "html.parser")

# 日時を取得データの冒頭に追加
data=[]
now = datetime.datetime.now()
data.append(now.strftime('%Y/%m/%d'))
data.append(now.strftime('%H:%M:%S'))
# 履歴に関する情報を抽出し取得データに追加
for element in soup.find_all(class_="yen"):
    data.append(element.text.replace(',',''))

# 取得データをコンマ区切りの1行にまとめて書き出す
line = ''
for i in range(len(data)):
    line += data[i]
    if (i < len(data)-1):
        line += ','
print(line)
このファイルはパスワードが平文で書かれているので管理には注意。例えばパーミッションを700にしておく。
$ chmod 700 getnurolog.py

実行結果:
$ ./getnurolog.py
2021/06/06,01:51:34,43,6089,3017,-,0,24
「取得日, 取得時間, 今月の使用量, 今月の残り容量合計, 今月末有効期限切れ容量, 今日の使用量, 昨日の使用量, 一昨日の使用量」の順に値が取得され、1行に出力されている。

これを例えば次のように linux や macos の cron で1日に1回自動実行すれば、csv形式で履歴の追記が可能。
$ crontab -e (エディタで末尾に下記行を追加)
0 6 * * *        $HOME/bin/getnurolog.py >> $HOME/log/nuromobile.csv 



スクレイピング・ハッキング・ラボ Pythonで自動化する未来型生活 (技術の泉シリーズ(NextPublishing))

スクレイピング・ハッキング・ラボ Pythonで自動化する未来型生活 (技術の泉シリーズ(NextPublishing))

  • 作者: 齊藤 貴義
  • 出版社/メーカー: インプレスR&D
  • 発売日: 2020/09/04
  • メディア: Kindle版

PythonによるWebスクレイピング 第2版

PythonによるWebスクレイピング 第2版

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2019/03/26
  • メディア: 単行本(ソフトカバー)


2023/2/9 追記
小さな暗号鍵が無効化されている最近のOpenSSLでは以下の1行を追加する必要あり:
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += "HIGH:!DH:!aNULL"
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。