|
カテゴリ:KATS(自動売買プログラム)
やっぱりWebスクレイピングは泥臭いですね。。。
SBI証券に入金手続きを行いましたので、見た目上は購買余力を与える事が出来ました。 発注すると「お買付余力が不足しております」と言われますが。 発注は明日以降にやるとして、購買余力の取得はまともに作れますので 早速Webスクレイピングを試みました。まあ一応取得出来ました。 その後、Webサイトから手動でログインパスワードや取引パスワードなどを設定し直しました。 その事を忘れていましたのでプログラムから与えたパスワードが間違っていました。 ・・・でもテストすると、ログインして購買余力の取得をしたら取れません。 「あれ?」と思ったのですが、調べてみるとパスワードが間違っていてログイン 出来てなかった事に気付きました。ダサい(汗)。 WebサービスAPIだと戻り値のXMLからステータスを見たら成功か失敗か簡単に 判定出来たんですよね。それが、わざわざログインが成功したかどうか確認する為に HTMLを解析しないといけないなんて。マジで「泥臭いなぁ」と落胆しました(´д`; ログインだけじゃなく、全てのリクエスト送信に対して「成功した時に、失敗した時と 比べて明らかにそれと分かる判断基準」を考える必要があります。 さすがに失敗したケースの全てを洗い出して判定するのは馬鹿らしいので、 成功したか失敗したかだけ判定するようにします。・・・あぁ面倒臭い(-_-; ちなみにログイン判定については、応答HTMLソースの文字列中に「ログアウト」が 含まれていたらログイン成功だとみなすようにしました。無ければ失敗。 Webページを操作して発注していた皆さん、本当に大変な事をしてたんですね。 HttpWebRequestクラスで実装しています。動作は比較的軽快です。 WebBrowserクラスも試してみましたが、このクラスはShowしていないと動作しない というバグがあるようです。 画面に見えないような座標にShowするという小細工もありますが、基本は ブラウザ画面をFormに埋め込むようにして使う事になるでしょう。 しかもレスポンスに対して画面描画が完了したDocumentCompletedイベントをハンドルして 後続処理を行う必要があります。なのでやはり動作の遅さを感じます。 試しにログイン処理で処理速度を計測したところ、HttpWebRequestだと一瞬なのに WebBrowserは少し遅いです。特に初めてのリクエストは1秒以上掛かる感じです。 仮にFormにWebBrowserを埋め込まずコード内でインスタンス化してShowしてみたら 実行時にIEが立ち上がりました。 IEのプロセスが立ち上がる時間があるので体感速度は死ぬほど遅くなりました。。。 パフォーマンスを気にするならHttpWebRequestを使うべきでしょうか。 ※これは私の個人的な感想です お気に入りの記事を「いいね!」で応援しよう
[KATS(自動売買プログラム)] カテゴリの最新記事
|