pythonで株取引したい。
会社の人に自動取引で稼げないかとの話をされたので、
で、私はweb上での株取引にはSBI証券を利用している。
せっかくなので自動取引の方法を少し試してみる。
※私は為替(非FX)の方が強いんだけどなぁ。
早速少し調べた。
(1)ここで似たようなことをやろうとして失敗している様子である。(勝手にリンク貼ってゴメンナサイ)
http://talkabouthaskell.blogspot.com/2011/01/python-httppost.html
このサイトのリダイレクトでハマったらしいので、キャッシュやら認証やら何かが足りないんだろうなと思って、
ログインとか関係で適当に漁ってみると、次のような記述を見つけた。
(2)Cookieを使ってみるような記述。(またゴメンナサイ)
http://d.hatena.ne.jp/yumimue/20080101/1199148663
で、そもそもCookieってなんだろう?となった。
なんとなくキャッシュっぽい印象だけあったけど、実はイマイチ知らない言葉。
せっかくなので調べてみると、
Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させるしくみ。
Cookieにはユーザに関する情報や最後にサイトを訪れた日時、そのサイトの訪問回数などを記録しておくことができる。
Cookieはユーザの識別に使われ、認証システムや、WWWによるサービスをユーザごとにカスタマイズするパーソナライズシステムの要素技術として利用される。1つのCookieには4096バイトのデータを記録でき、最大で300のCookieを保存できる。
1台のサーバが同じコンピュータに対して発行できるCookieの数は20個に制限されている。
Cookieにはそれぞれ有効期限を設定することができ、有効期限を過ぎたCookieは消滅する。
http://e-words.jp/w/Cookie.htmlより
ということで、どうやらサーバ側で有効期限を決められるキャッシュのようなものらしい。
では適当にコーディングをば。
面倒なので試行錯誤は飛ばします。
アクセス出来たかを確認するために、.pyファイルと同じ階層にhtmlを保存しながらページを開いてます。
# # -*- coding:utf-8 -*- # #============================================================ # SBI証券サイトを弄りたいpythonプログラム初級編 # by FJKei #============================================================ import urllib import urllib2 import cookielib # ログイン情報 USERNAME = "ユーザIDを入れる" PASSWORD = "パスワードを入れる" # WebページURL class URLs(): main = { "top" : "https://site2.sbisec.co.jp/ETGate/", "market_top" : "マーケットのトップURLを入れる", "koza" : "口座管理のトップURLを入れる" } BackupPage = { "toppage" : "https://k.sbisec.co.jp/bsite/visitor/top.do", "nikkei_ave" : "https://k.sbisec.co.jp/bsite/market/menu.do" } SaveCnt = 0 def SavePage(page): global SaveCnt f = open("out%03d.html"%(SaveCnt),"w") f.write(page) f.close() SaveCnt += 1 # システム全体 if __name__ == '__main__': # Cookieを保存してくれる何かを生成してリンクする。 opener = urllib2.build_opener() opener.add_handler(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) loginform = '&user_id=%s&user_password=%s'%(USERNAME,PASSWORD) logincookie = '&JS_FLG=1&BW_FLG=chrome\%2CNaN&_ControlID=WPLETlgR001Control&_DataStoreID=DSWPLETlgR001Control&_PageID=WPLETlgR001Rlgn10&_ActionID=loginHome&getFlg=on&ACT_loginHome.x=9&ACT_loginHome.y=4' # Cookieを利用してログイン(トップページへ) req = urllib2.Request(URLs.main['top'],loginform+logincookie) conn = opener.open(req) cont = conn.read() SavePage(cont) # Marketのトップページを開く req = urllib2.Request(URLs.main['market_top']) conn = opener.open(req) cont = conn.read() SavePage(cont) # 口座管理のページを開いてみる req = urllib2.Request(URLs.main['koza']) conn = opener.open(req) cont = conn.read() SavePage(cont)
こんな感じでページにアクセス出来たみたいです。
最初にアクセスした時のcookieは保存出来るのかと思ってトップページに一回アクセスしてみたりしたけど、
なんかうまくいかなかった。
デフォルトのcookieを手入力で書くのはなんか括弧悪いなあと思いつつ、面倒なのでそのままに。
次はサーバで常駐してをたまに記録する仕組みを作る方法を作りたい。
(別に次回の更新がそういうことになる訳ではないですよ。)