今日は、投資ブログで公開している三菱UFJ投信主催の「投資にチャレンジ!!ポートフォリオの達人」から毎日更新される運用成績を取得するプログラムを作りました。これまで毎日コンテストの個人ページからコピー&ペーストして作成していた記事の成績部分をプログラムを実行するだけで作成できます。
■投資ブログの記事
この記事の作成を効率化します。
http://mockuninvestment.blogspot.jp/2013/06/201367.html
■コマンド実行方法
取得したい参加者の個人ページのURLをプログラムに渡してあげるだけ。
python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1
■出力内容
コマンド入力後、Enterを押して実行すると以下のフォーマットが出力されます。
2013/6/7更新 ポートフォリオの達人ランキング
==========
ランキング(6/7更新):198位
評価額:100,357円
リターン:0.47%
リスク:10.63%
リターン ÷ リスク:0.04(0.04435225290)
==========
http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1
あとはブログに張り付けるだけです。投稿用のアドレスにメール送信するプログラムと組み合わせれば、完全自動化できてしまいますね。
■ソース
■投資ブログの記事
この記事の作成を効率化します。
http://mockuninvestment.blogspot.jp/2013/06/201367.html
■コマンド実行方法
取得したい参加者の個人ページのURLをプログラムに渡してあげるだけ。
python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1
■出力内容
コマンド入力後、Enterを押して実行すると以下のフォーマットが出力されます。
2013/6/7更新 ポートフォリオの達人ランキング
==========
ランキング(6/7更新):198位
評価額:100,357円
リターン:0.47%
リスク:10.63%
リターン ÷ リスク:0.04(0.04435225290)
==========
http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1
あとはブログに張り付けるだけです。投稿用のアドレスにメール送信するプログラムと組み合わせれば、完全自動化できてしまいますね。
■ソース
#!/usr/local/bin/python
#coding: utf-8
from bs4 import BeautifulSoup
import urllib2,re,unicodedata,sys
template=u"""2013/%(date)s更新 ポートフォリオの達人ランキング
==========
ランキング(%(date)s更新):%(rank)s
評価額:%(amount)s
リターン:%(ret)s
リスク:%(risk)s
リターン ÷ リスク:%(riskreturnratio)s
==========
%(url)s"""
def PostCreater(url):
param={}
param['url']=url
bs=BeautifulSoup(urllib2.urlopen(param['url']).read())
bsdate=bs.find('h2',{'class':'ranking'})
bsother=bs.find('table',{'class':'ranking'}).find_all(['th','td'])
param['date']=re.sub(u'月','/',unicodedata.normalize('NFKC',bsdate.text.encode('sjis')[10:16].decode('sjis')))
param['rank']=bsother[1].text
if param['rank']=='':
# 1~3位までは、順位が文字列ではなく画像なので、画像のalt属性から順位を取得します。
param['rank']=bs.find('th',{'rowspan':'2','class':'rank'}).find('img')['alt']
param['amount']=bsother[15].text
param['ret']=bsother[11].text
param['risk']=bsother[13].text
param['riskreturnratio']=bsother[9].text
print template % param
if __name__=='__main__':
'''
コマンドラインで以下のように実行する
"python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1"
'''
PostCreater(sys.argv[1])
コメント
コメントを投稿