WebBrowserコントロール使わないとHTMLDocument使えない! |
|
| HTTPRequestクラスとHTTPResponseクラスを使ってWEBサイトからHTMLを文字列形式で受信することはできたのですが、ここで問題発覚。HTMLの構造を解析するためにHTMLDocumentを使おうとしたら、このHTMLDocumentはWebBrowserコントロールと連携する形でしか使えないようです。つまり文字列を直接HTMLDocumentに変換して、HTMLDocumentのパーサを利用するというような方法が無いのです。XMLみたいにLoadXMLのようなメソッドがあればいいのですが、そういうものは存在しないようです。 いくらなんでも、他にHTMLパーサみたいなクラスぐらいあるだろ~と思って調べても、見つかりませんでした_| ̄|○。そういうクラスが存在しないということを確認するのに丸一日かかっちゃったよ_| ̄|○_| ̄|○_| ̄|○ でも何でHTMLDocumentよりも単純なHTMLパーサが無いの??? おかげで、自動売買をやってるブログで、axWebBrowserをスレッドではなくタイマーで制御していたり、わざわざ発注専用のアプリケーションを使って引数付きで起動して発注していたり、UWSCを使ってる理由がよくわかりました_| ̄|○。 私の現在の実装では売買シグナルが出る度に発注を別スレッドでやる予定だったので、これは厳しいです。でもaxWebBrowserはコントロールだから、あまりマルチスレッドには向かない感じです(無理というわけではないけど、ちと実装面で不安な部分がある)。 HTMLDocumentを使わないで独自にパーサを作ってやるか、それともaxWebBrowserコントロールを使ってアクセスするか…… 色々考えたのですが、結局HTMLDocumentを使わない方向で実装することになりそうです。多分GMOインターネット証券がそのうち発表するであろうAPIはWebAPIでXMLを返してくる形式のものなのではないかと思うので(勘)、HTMLを文字列化したものをパーサに通すという形をとった方が後々楽なのではないかと。 HTMLパーサは誰か他の人が作ったライブラリでもあるだろうと思って色々調べてみたのですが、残念ながらどれも実装面がいまいちな感じでした。きちんとHTMLを解釈してくれないとか、読み込みの段階でエラーが出ちゃったりとか。 ETWrapperはどうやってるんだろうと思って調べてみたら、どうもRubyを使っているようです。私はRubyとか使ったことがないし、VB.NETとの連携の仕方もわからないので、これについてはお手上げです。 自分でHTMLパーサを作るの、何か不安だなあ…… ∩∧_∧ l⌒) (´・ω・`)∩ 知らんがな!! \l⌒) , ノ \__ ノ 知らんがな! 知らんがな! ∩∧__∧∩ ∩∧∧∩ ∧∧ (´・ω・`)/ | (´・ω・`) / (´・ω・`) ヽ( ・ω)ノ∩/■\∩.∧___∧∩ (´・ω・`)l ( ) l( ω・ `)/
| |
|
7月16日(日) | トラックバック(0) | コメント(0) | 日記 | 管理
|
とりあえずWEBサイト読み込めるようになった |
|
| とりあえずWEBサイトにアクセスするためのプログラムをちょっとだけ書きました。 作ってる最中にVB.NETのオブジェクトの参照関係がおかしくなっちゃったみたいで、System.Web.HttpUtilityを呼び出そうとしても、そんなオブジェクトは存在しない~みたいなエラーが出てきました。どうしてだぁ~?と思って色々弄くっていたところ、オブジェクトブラウザの方で参照の更新をかけると正常な状態に戻りました。 その後HttpWebRequestとかを弄っていたのですが、こういうのを組むのは久しぶりのことなのでてんてこ舞い。エンコードとか引数の渡し方とかをすっかり忘れてしまっています。 そこでまずは難しいことを考えずに、POSTやGETを使ってサイト上の文字列を取得するプログラムを書くことを目的としました。最初はGoogleを使ってテストしていたのですが、GoogleだとPOSTメソッドを受け入れてくれないようなので、POSTメソッドに関してはlivedoorファイナンスのカブログの検索ページでテストしました。カブログのページはGETメソッドで応答するように作られていますが、POSTメソッドも受け入れるようです(というか、大抵のGETメソッドを受け入れるページはPOSTメソッドも同じ引数で受け入れるようにできているのですが)。私が使っているNorton Internet Securityのログを見てみると、一応見た目には引数が無い状態でカブログにアクセスしていて、実際には検索結果が得られているので、多分POSTはうまくいっていると判断。あとは証券会社に実際にユーザーIDとパスワードをぶち込んで送信すればログインできるはずですが、ちょっと怖いのでまだやってません。結局まだPOSTメソッドやGETメソッドで取得したものを文字列として返すだけという状態ですが、まあWEBサイトへのアクセスの肝となる部分は何とかなったと思います。 とりあえず、GMOインターネット証券がAPIを公開するまでは、HTMLをゴリゴリと読み込んで、目的の値が記述されているところをタグの深さから類推するような形になりそうです。現物買い付け余力を囲むtdタグとかにクラス属性とかが設定されていれば読みやすいんだけどなあ。これが嫌だからAPIに期待。 ______ |┌‐――┐| |-、 | | | | | ] ザー …… | |_/ ̄ ̄ || | |_/ └ | |┘-'、 /lll|||||||lll \| || m ノlll|||||lll`mノ|_||
| |
|
7月16日(日) | トラックバック(0) | コメント(0) | 日記 | 管理
|