• ベストアンサー

WebRequestでJavascriptの値取得

VB .Net(2008)のWebRequestでHPのページの値を取得するものを作成しているのですが、Javascriptが表示する部分の値が取得出来ません。 Javascriptが動的に挿入する値を取得する方法はあるでしょうか? よろしくお願いします。

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

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

こんにちは WebBrowserコントロールを使うとjavascriptを自由に実行して、値を取得できますが WebBrowserコントロールが使えない場合は少し時間がかかりますね。 WebBrowserコントロールを使ったサンプルです。 下記のhtmlから値を取得する場合です。 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form name="js"> <input type ="text"id="n1" name="t1" value="" /> <input type="text" id="n2" name="t2" value="" /> <input type="button" id="n3" name="b" value="値" onclick="st()"/> </form> <script type="text/javascript"> function st() { document.js.t1.value = "テスト1" document.js.t2.value = "テスト2" } </script> </body> </html> #簡単にするために各inputにidを付けていますので、idを手がかりにInvokeMember("click")でボタンをクリックしてjavascriptを実行します。 #input type="text"に値が表示されますので、GetAttribute("value")でinputの値を取得します。 #idの値を手がかりにしてinputの値を取得してListBox1に表示します。 Public Class Form1 Dim ur As String = "http://~~~~l" Private Sub f() Handles MyBase.Shown WebBrowser1.Navigate(ur) WebBrowser1.Visible = False 'WebBrowser1を非表示にする End Sub Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted ListBox1.Items.Clear() Dim txt1 As String Dim txt2 As String If sender.url.ToString = e.Url.ToString Then 'ボタンをクリックしてjavascriptを実行 WebBrowser1.Document.GetElementById("n3").InvokeMember("click") 'inputに値を入力 txt1 = WebBrowser1.Document.GetElementById("n1").GetAttribute("value") txt2 = WebBrowser1.Document.GetElementById("n2").GetAttribute("value") Dim wre As Net.WebRequest = Net.WebRequest.Create(ur) Dim wrs As Net.WebResponse = wre.GetResponse() Dim st As IO.Stream = wrs.GetResponseStream() Dim reader As New System.IO.StreamReader(st) Dim line As String line = reader.ReadLine Do Until IsNothing(line) 'idの値を手がかりにしてinputの値を取得してListBox1に表示 If line.Contains("id=""n1""") Then ListBox1.Items.Add(txt1) ElseIf line.Contains("id=""n2""") Then ListBox1.Items.Add(txt2) End If line = reader.ReadLine Loop reader.Close() End If End Sub End Class

jun_jii
質問者

お礼

質問の書き方が悪かったようですいません。 javascriptがタイマーで定期的に自動更新する値を取得したいという事だったのです。 この場合WebBrowserを使えばもちろん取得できます。 しかしWebBrowserは遅くて重いため使いたくなかったので・・・ ありがとうございました。

その他の回答 (1)

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

WebBrowserコントロールを使う

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/687nondispbrowser/nondispbrowser.html
jun_jii
質問者

お礼

やはり webrequest や webclient では無理なようですね・・・ありがとうございました。

関連するQ&A

  • VB.NET+Javascriptで、VB.NETで求めた値をJavascriptで使いたい

    こんにちは。 タイトルのとおりなのですが、VB.NETのWebページで、 Page_Loadで求めた値があるのですが、これを同じページのJavaScriptで使いたいのです。 詳細 VB.NETのPage_Loadで値を求める。 JavaScriptで、ボタンが押されたときに、TEXTAREAにその値を挿入する。 お願いしますー

  • JavaScriptで取得した値をASPで受け取りたい

    現在、アクセス解析の為にindex.aspというファイル内でREMOTE_ADDR、HTTP_USER_AGENT、HTTP_REFERERの値を取得し、CSVデータとして保存しています。 ですが、index.aspはアクセスされた時に一番初めに表示して欲しいページにも関わらずaspファイルである為、index.htmlファイルを作成し、その中に呼び込む形にしています。 でもそれですと、HTTP_REFERERで取得できる値はindex.aspを表示する前に必ず通るindex.htmlだけになってしまいます。(サイト内の他のページからindexに戻ってきた場合は正しい値がとれる) これだと正しい解析結果が求められないので、index.htmlの方にJavaScriptのコードを埋め込み、リ HTTP_REFERERの代わりにしようと考えました。 <frame src="index.asp?ref=***" name="xx"> とすれば値はindex.aspに渡せるのですが(これが行って良い方法なのかはわかりませんが)、受け渡す値はその都度生成されるもので、このタグの中にそのJavaScriptで出した値をどう埋め込んでやればいいのか解らず、困っています。 何か良い方法はありませんでしょうか。 index.aspはどうしてもaspファイルである必要があるのでここの仕様は変更できません。 もし無理な場合は、「無理だ。」の一言もお待ちしています。 よろしくお願いします。

  • JSPからJAVASCRIPTの値取得

    HTML上でチェックボックス・ラジオボタンで選択した値、どれがチェックされたかを取り出すjavascriptを作成しました。 これをJSPのJAVA側に受け渡ししたいのですが、getparameter以外の方法はありますでしょうか? JAVA側からJAVASCRIPTの関数を呼出し値を取得できれば一番早いのですが。 よろしくお願いします。

  • JavaScript オラクルの値 取得

    HTML上でオラクルのあるTBLの更新日時を表示させたいのですが どのような方法がありますでしょうか? JavaScriptで値をもってこれそうという所までわかったのですが、やり方が わかりません。 Javascriptでオラクルの更新日時を取得し、HTML上で表示するやり方も 教えていただけないでしょうか? 宜しくお願い致します。

  • JavaScriptの値をPHPで取得

    こんにちわ。よろしくお願いします。 いま、JavaScriptで取得した値を同一ページ内でPHPの変数に入れることはできないでしょうか? 例えば <SCRIPT language="JavaScript"> <!-- document.write(document.referrer); // --> </SCRIPT> というのがあったとして これの値をPHPの変数に入れることができればなぁっと考えています。 自分的にには無理っぽいかなって思っているのですが、 もしかしたらなにか方法があるかもしれないと思い 質問させていただきました。 なにか方法がわかる方がいらっしゃいましたらアドバイスお願いします。

    • ベストアンサー
    • PHP
  • strutsを使ってjavascriptの値で値を変えた後

    いつも大変助かっております。さっそくですが、質問です。 1.strutsを使って、JSPページにフォームでセットした値を取得 (コンボボックスの値) 2.JSPでフォームから取得しセットした値を表示させた後、その値をjavascriptで取得、値を編集 3.2で作られた値をJSPページに表示させる (コンボボックスの値) つまりは、コンボボックスの値を取得し、javascriptで編集した後、そのコンボボックスの値を編集した値に変えて表示したいのです。 2まではできたのですが、3ができません。。 どなたかご教授くださいませ。 よろしくお願いします。

  • javascriptでの値の受け渡しについて教えて下さい

    はじめまして、初心者なのですがjavascriptについて おわかりになる方がおりましたら教えて下さい。 現在HPを作成しているのですが、javascriptについて 全くの初心者です。こんな事もわからないのか?っと 思う方もいらっしゃるとは思いますが教えて下さい。 本当に困っています。。。よろしくお願いします。 以下にscriptも記載します。 // html側ページ <a href='javascript:popup()'>てすと</a> // 外部javascript内 function popup(){ subWin=window.open("./test.php?mode=test&no=[ここに値を入れたい];","POPUP","width=785,height=650,scrollbars=yes"); } html側からデータNOの値をpopup scriptのnoの部分に入れて、 この番号に一致したページを別ページで表示したいのです。 みなさんよろしくお願いします。

  • ASP.NETのコントロールの値をJavaScriptで取得

    超初級の質問ですみません。 (ASP.NET初心者です) ASP.NETのラベルコントロールの値をJavaScriptで取得する方法が分かりません。 var data = document.getElementById("lblTest").Text; alert(data); といった記述で良いのかと思っていたのですが、値が取得できていません。 諸事情によりJavaScriptのFunctionの引数は増やせない為、直接値を参照する必要があります。 ご回答、宜しくお願いします。

  • C#2008でWebBrowserコントロールからJavaScriptで生成されたForm値に値をセットするには

    VisualStadio2008でC#で開発しています。 .netframework標準のwebBrowserでいろいろなページに値をセットして結果を取得するアプリを作っていて 通常のHTMLのページであれば webBrowser.Document.All.GetElementsByName("hoge")[0].InnerText = "hoge"; など値をセットしたり取得したりすることができます。 しかしFORM部分をJavaScriptから動的にHTMLを作成している(と思われる)ページに対しては上記の方法で取得することができませんでした。 また試しにGetElementsByTagName("form")とかGetElementsByTagName("input")とかでFOR文でぐるぐる回して探してみましたが該当するデータは見当たらず javaScriptで動的に生成された部分はwebBrowserから取得できない仕様のようです。 そこで質問なのですがなんとかしてこの動的に生成されたFORMに値をセットしてSUBMITする方法ってないでしょうか? webBrowser上に目で見ればはっきり見えてるのに操作ができなくて朝から行き詰ってます。 よろしくお願いいたします。

  • JavaScriptで動くページの実行結果をVBで取得する方法

    JavaScriptで動くページの実行結果をVBで取得する方法を教えて頂きたいです。 現在WebBrowserやIEを別途起動して、それに対象のページを表示して コントロールに数字なり文字を入力、送信で 返ってきた結果をHTMLのDocument内から探し出しているのですが、 直接、HTTP?を送受信するなどの方法でやり取りすることは出来ないでしょうか? VB.NET2003+FrameWorks1.1+WindowsXP-PRO環境です。 よろしくお願い致します。

専門家に質問してみよう