Aug 19, 2010

iPhoneのパケット料金を取得するためのPythonコード

iPhoneのパケット料金をMy SoftBankからスクレイピングしてくるPythonコードを書いた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import yaml
import mechanize
import re

# setup
print 'setup...'
conf = yaml.load(open('config.yaml'))
br = mechanize.Browser()
br.set_handle_refresh(True)
br.addheaders = [('User-agent', 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 Safari/525.20')]

# login
print 'login...'
br.open('https://my.softbank.jp/msb/d/top')
br.select_form(nr=0)
br['msn'] = conf['userid']
br['password'] = conf['password']
br.submit()

# jump to mainmenu
print 'jump to mainmenu...'
br.open('https://my.softbank.jp/msb/d/webLink/doSend/WCO010000')

# jump to bill_before_fixed
print 'jump to bill_before_fixed...'
br.open('https://bl11.my.softbank.jp/wco/billBeforeFixed/WCO020')

# packet fee
html = br.response().read().decode('cp932')
fee_total = 0
r = re.compile(u'通信料.+?([0-9,]+)円')
for fee in r.findall(html):
  fee_total += int(re.sub(',', '', fee))
print fee_total

下のように、config.yamlにMy SoftBankのユーザID(電話番号)とパスワードを書いておくとか、コード見れば分かるよね。

userid: 080XXXXXXXX
password: your-password

要は下のコードの前半部分をPythonで書き直したもの。

Twitterにパケット代を投稿するpacketterを、My SoftBankがリニューアルしたのでまた更新 - 今日覚えたこと

後はtwitterに投げるなりApp Engineに組み込むなり好きに書けばいい。

追記: モジュール化してgithubに上げた。

http://github.com/ogawa/py-iPhone-Packeteer

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com