競馬(JRA)のインターネット投票サイトのデータ取り込みに関する質問

このQ&Aのポイント
  • 競馬(JRA)のインターネット投票サイトのIPATから、出馬表やオッズなどのデータを取り込むプログラムを作成しているが途中で行き詰まった。アクセスするとJavaScript対応のブラウザでアクセスするか、JavaScriptを有効にしてアクセスするようなメッセージが帰ってくる。VBでIPATにアクセスする方法はあるか尋ねたい。
  • 競馬(JRA)のインターネット投票サイトIPATからデータを取り込むプログラムの作成中に問題が発生している。アクセスするとJavaScript対応のブラウザでアクセスするか、JavaScriptを有効にしてアクセスするようなメッセージが表示される。VBでIPATにアクセスする方法を知りたい。
  • 競馬(JRA)のインターネット投票サイトのIPATからデータを取り込むプログラムを作成しているが問題が発生している。アクセスするとJavaScript対応のブラウザでアクセスするか、JavaScriptを有効にしてアクセスするようなメッセージが表示される。VBでIPATにアクセスできる方法はあるのか知りたい。
回答を見る
  • ベストアンサー

インターネット通信

競馬(JRA)のインターネット投票サイトのIPATから、出馬表やオッズなどのデータを取り込むプログラムを作りたいのですが、途中で行き詰ってしまいました。どなたか分かる方いらっしゃいましたら、ご教授願います。 現在、次のようなコードで通信を試みています。   Dim http As New MSXML2.XMLHTTP30Class   Dim str As String   http.open("POST", "https://www.ipat.jra.go.jp/pw_080_i.cgi", False)   http.send("g=Mnu02&i=******")    (******は、IDが入ります。) これを実行すると、【JavaScript対応のブラウザでアクセスするか、JavaScriptを有効にしてアクセスしてください。】のようなメッセージが帰ってきます。 VBで、IPATにアクセスする方法は無いのでしょうか? ちなみにVisualBasic2008を、WinXP Pro sp3 で使っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

VB2008なら普通にSystem.Net.HttpWebRequestを使用したらいかがですか?

nari_assy
質問者

お礼

自分なりにSystem.Net.HttpWebRequestを調べてみましたが、きちんと理解することができませんでした。でも、なんとなく書いたコードで通信には成功しましたが、やはりJavaScriptウンヌンのエラーになってしまいました。 そこで、もう一度web側のソースを調べ直してみると、POSTしていたデータが間違っているようでした。 改めて、POSTデータを書き直すと、System.Net.HttpWebRequest, MSXML2.XMLHTTP30Class のどちらでも正常なデータを取得することができました。 お騒がせして、すみませんでした。また、ご指導ありがとうございました。

nari_assy
質問者

補足

早速のご回答ありがとうござます。 こちらの方法が普通なのですね。自分はネットを使って独学でやっているものですから、検索にヒットした、質問での方法しか知りませんでした。 今、"System.Net.HttpWebRequest"で検索したところ、一読して理解できなかったのですが、じっくり読み込んで、この方法を試してみたいと思います。 "IPAT"は、競馬開催日しかアクセスできないので、早くても週末、理解が及ばなければ、かなり時間が掛かるかも知れませんが、結果をご報告いたします。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1
nari_assy
質問者

お礼

一応解決いたしました。ご指導ありがとうございました。

nari_assy
質問者

補足

早速のご回答ありがとうございます。当初、IEを操作して、情報を取得する方法を考えていましたが、情報を取得した後、IEに表示されるまで時間が掛かるので、直接、情報だけを取得できないものかと考えました。 WebBrowserコントロールを使った場合、IEを操作するより早くできるのか、今度試してみます。時間が掛からなければ、この方法は、自分のレベルでも扱えそうなので、この方法で組んでみたいです。

関連するQ&A

  • リアルタイムなオッズが見たい。ipat

    JRA I PATで競馬をやっています。I PATに単勝オッズ、枠連、馬単等のオッズかありますが、やはり一度、I NET ID等で、I PATに入らないと見られないものでしょうか?リアルタイムでオッズを見たいのですが?試しに https://www.ipat.jra.go.jp/pw_810_i.cgi を入れて見ましたが、やはり無理でした。か、I PAT以外で無料配信しているサイトはありませんでしょうか?出来ればオッズだけの事ですので、I PATで済ませたいのですが、皆さんはどうされておられるのでしょうか?てっとり早いのはJRA VANですが、既にレーシングビューア等別口で入っておりまして。

  • InternetExplorer.Applicat

    Sub test1() Dim objIE As Object Dim i As Long Dim MyRow As Long Dim Str As String Dim tmp As Variant Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://oshiete.goo.ne.jp/" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop Str = objIE.Document.Body.innerHTML 'ソースを抜き出す tmp = Split(Str, Chr(10)) '配列に格納する MyRow = 1 '初期値 For i = LBound(tmp) To UBound(tmp) Cells(MyRow, 1) = tmp(i) MyRow = MyRow + 1 Next i objIE.Quit Set objIE = Nothing End Sub ************************************************** Sub test2() Dim objIE As Object Dim Str As String Dim tmp As Variant Dim i As Long Dim MyRow As Long Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://oshiete.goo.ne.jp/", False objIE.Send Str = objIE.responseText 'ソースを抜き出す tmp = Split(Str, Chr(10)) '配列に格納する MyRow = 1 '初期値 For i = LBound(tmp) To UBound(tmp) Cells(MyRow, 1) = tmp(i) MyRow = MyRow + 1 Next i Set objIE = Nothing End Sub ************************************************** 上記の二つのコードは どちらもVBAでHTMLソースをエクセルに書き出すコードなのですが 結果が違います。 なぜなのでしょうか? 実際のソースを確認したら CreateObject("MSXML2.XMLHTTP") の方が正しかったです。 CreateObject("InternetExplorer.Application") は何が取得されてるのでしょうか?

  • 参照設定に「MSXML2.XMLHTTP」

    VBAでMSXML2.XMLHTTPを使ってIE操作をしたいのですが、 参照設定に「MSXML2.XMLHTTP」が見つかりません。 Dim objIE As Object でも宣言できますが、 本物のオブジェクトで宣言したいです。 何かをダウンロードしなくてはいけないのでしょうか?

  • VBA システムエラー

    始めまして VBA初心者です Excel2003のVBAで「toto」のサイトからデータを取得する プログラムを作成しようと思っています。 しかし「xmlHttp.responseText」の部分で 「実行時エラー '-1072896658(c00ce56e)':」 「システムエラー:-1072896658」 のエラーが出てしまいます。 解決方法をご教授いただけないでしょうか? '**************ソース********************************** Dim xmlHttp As MSXML2.xmlHttp Dim html As String Set xmlHttp = CreateObject("MSXML2.XMLHTTP") Call xmlHttp.Open("GET", "http://www.toto-dream.com/dc/SK0160.do", False) Call xmlHttp.send(vbNull) html = xmlHttp.responseText Set xmlHttp = Nothing '**************ソース**********************************

  • VBA InStrがうまくできない

    ソースを見ると <div class="hd"> と言うタグは有るのに VBAで Sub test() Dim objIE As Object Dim myObj As Object Dim str電話番号 As String Dim strHTML As Variant Dim intstart As Variant str電話番号 = "03-58**-58**" Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://search.loco.yahoo.co.jp/search?p=" & str電話番号, False objIE.send strHTML = objIE.responseText intstart = InStr(1, strHTML, "<div class=""hd"">") End Sub とした時にintstartは0が返ります。 なぜソース上は<div class="hd">は存在するのに 0が返るのでしょうか?

  • myObjにタグを格納してループはできない?

    MSXML2.XMLHTTPの時は、 myObjにタグを格納してループはできないのでしょうか? Sub test() Dim objIE As Object Dim myObj As Object Set objIE = CreateObject("MSXML2.XMLHTTP") objIE.Open "GET", "http://○○.html", False objIE.send For Each myObj In objIE.Document.all.tags("p") Next Set objIE = Nothing End Sub 上記だと実行時エラー438になります。 Set objIE =CreateObject("InternetExplorer.Application") でループしないとダメでしょうか? Set objIE =CreateObject("InternetExplorer.Application") は時間がかかるので、できれば Set objIE =CreateObject("MSXML2.XMLHTTP") でやりたかったのですが、タグを格納できないのでしょうか?

  • 競馬新聞 予想でお願いします。

    大変くだらない事に利用して、申し訳ありません。競馬をJRA IPATでやっています。出馬表があるのですが、そのままコピーして、エクセルに貼り付けた時、予め決めた通りの法則(例えば、同枠馬に同じ母、同じ厩舎、父親馬が同じ、祖父が同じ。または人気と枠が同じ←単勝オッズ参照、または1枠にホワイト…、2枠にブラック…、クロフネ等)になった場合、よく見落とすのですが、点滅するとかで知らせてくれるような機能はエクセルにはありませんよね?

  • 競馬 馬券 予想にエクセルを使用して。 

    競馬をI-PATでやっています。JRAの出馬表に、単勝のオッズが出てまして、これをエクセルに移動させました。オッズの位置は V-9 V-15 V-21 V-・・・・・・V-99(1枠2頭で全16頭として)をA→Zを使い、数字が小さいほうから順番に並べ替えたいのですが、(同じサイズの結合セルが必要です)とエラーが出ます。素人でして意味がわからず、またこのようなやり方で合っているのかさえわかりません。順番に並びかえるには、一体どうすればいいのでしょうか?

  • Str関数について

    Str関数を使って Dim x As String Dim i As Double i = 0.5 x = Str(i) Text1.Text = x 上のようなプログラムを書いたのですが 実行するとテキストボックスに .5 と表示されてしまいます 0.5 と表示するにはどうすればよいのでしょうか? よろしくお願いしますい。

  • VBでシリアル通信がうまくいきません

    VisualBasicのシリアルポートメソッドを使い、RS232-C通信を試そうとしている初心者です。 現在、別のPCからTeratermより文字を送り、自分のPCで受信結果を得ようとしているのですが 別PCから単発で文字を送っても、自分のPCでは反応せず キーボードを押しっぱなしにすると、自分のPCのウィンドウに受信結果が表示されます。 一体、何が原因なのでしょうか? さっぱり、わからず途方に暮れています。 下記にソースコードを記載しますので、詳しい方は教えて下さると幸いです。 ------------------------------------------------------------------------ Public Delegate Sub MyDelegate(ByVal intData As Integer) Private Sub AddData(ByVal str As String) TextBox1.Text = str End Sub Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim dlgByte As MyDelegate = New MyDelegate(AddressOf AddData) Dim ByteRead(SerialPort1.BytesToRead - 1) As Byte SerialPort1.Read(ByteRead, 0, SerialPort1.BytesToRead) For i As Integer = 0 To ByteRead.Length - 1    Me.Invoke(dlgByte, ByteRead(0)) Next End Sub ------------------------------------------------------------------------