• ベストアンサー

VBSでHTMLソースの取得方法で

VBScriptでBODY部のHTMLソースを取得したいのですが出来ない場合があって悩んでいます。 msgbox objIE.Document.Body.InnerTextというかたちで表示させています。 ほとんどのページで問題なく出来るのですが・・・・ フレームで出来ているページに関して取得が出来ません。 そういった場合どうすればよいのでしょうか? 極論を言えば指定HTMLソースの中に文字検索が出来れば問題はないのですがソースが取得できないので検索しようがありません。

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

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

例えば http://www.shugiin.go.jp/index.nsf/html/index_kousei.htm ならば msgbox objIE.Document.frames("f2_main").Document.Body.InnerText とか msgbox objIE.Document.frames(2).Document.Body.InnerText で取得できます。 ただし、フレームで別ドメインを表示している場合は、不可能です。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;167796

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

想像ですが… フレームの場合、フレーム内は別ドキュメントになっているはずです。 参照しているオブジェクトが違っているのでは? 親ドキュメントがフレーム定義(frameset)のみの場合は、bodyタグが存在しないことが多いので、Body.InnerTextはnullで返ってきているだけではないのかな?

関連するQ&A

  • 続:IEの操作で新ページのソース取得方法は?

    「VBによりIEでページを表示させ、そのページから新しいページに移動させたとき、その新ページのHTMLのDocument取得方法をご教示頂きたくお願いします。」と先に質問し下記の回答を頂きました。   HTMLタグ付きなら   WebBrowser1.Document.body.innerHTML   だったと思います。 最初に表示させたページの制御には、次のようにしました。   objIE.Document.All("ACCOUNT").Value = "xxxx"   objIE.Document.All("PASSwd").Value = "yyyy"   objIE.Document.All("btn").Click 新しいページに対しても最初のページと同じようにして制御出来るようにするにはどうすればよろしいのでしょうか? 初心者で、最初の質問は中途半端でした。よろしくお願いします。

  • VBSでIEのログイン画面でのアカウントの自動設定について

    VBSで自動で起動したIEのログイン画面にアカウントを設定するやり方について 書籍にログインページであるという認識が Set objIE = Createobject("InternetExplorer.Application") If InStr(1, objIE.Document.Body.InnerText, "ログイン") > 0とありますが これはログインページをHTML形式で見た時にBodyタグの中に 「ログイン」があればログインページと認識できるということなのでしょうか? よくわからないのでよろしくお願いします。

  • WebBrowserに表示されているページのソースの取得方法

    RichTextBox1.Text =WebBrowser1.Document.body.innertext とすれば表示されている文字は取得できるのですがタグ付きのソースは 取得できません。 webBrowserコントロールに表示されている文字だけでなくタグもいっしょに 取得するにはどうすればよいのでしょうか

  • vbscriptでhtmlのソース保存

    vbscriptにてIEを操作し、指定URLのhtmlソースコードをファイルに保存するスクリプトを作成しています。 ですが、サイトによっては取得に失敗するケースがあり、原因が分かりません。 下記の例では、yahooのトップページは取得できますが、amazonのトップページは 取得できませんでした。 申し訳ありませんが、原因と解決策を教えていただきたいです。 よろしくお願いいたします。 尚、環境はWinXP(SP3) 、IEはver8を使用しています。 '--------------------------------------------' Option Explicit Dim objIE Dim strBody Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.amazon.com/" 'objIE.Navigate "http://www.yahoo.co.jp/" Do Until objIE.Busy = False WScript.sleep(250) Loop' strBody = objIE.Document.Body.InnerHtml msgbox strBody Dim fso, tf Set fso = CreateObject("Scripting.FileSystemObject") Set tf = fso.CreateTextFile("test.txt", True) tf.Write strBody tf.Close Set objIE = Nothing '--------------------------------------------'

  • VBAでソースの一番上から取得するには?

    Sub 取得() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.google.co.jp/" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop Debug.Print objIE.Document.body.innerHTML Set objIE = Nothing End Sub これだと、 <DIVstyle="DISPLAY:none"id=cst></DIV><TEXTAREAstyle="DISPLAY:none" id=csi></TEXTAREA><SCRIPT>if(google.j.b)document.body.style.visibility='hidden';</SCRIPT> からしか取得されないのですが、 実際のソースを見ると <!doctype html><html itemscope="itemscope" itemtype="http://schema.org/WebPage"> で始まってます。 VBAソースのてっぺんから取得する方法を教えてください。 innerHTML以外を使うのでしょうか?

  • JavaScript で HTML ソース取得

    [環境:とりあえず WinXP/Firefox12] JavaScript で HTML ソースを取得できないかと思っているのですが、 document.getElementsByTagName('html')[0].innerHTML では思うものが取得できませんでした。 というのは、 たとえば BODY の閉じタグが欠落しているようなソースに対して上記スクリプトで取得すると BODY の閉じタグが補完されたものが返ってきたのですが、 閉じタグが欠落したままのものが欲しいのです。 可能でしょうか…。 【理由】 Firefox のアドオン Selenium IDE を利用して、 Perl で作成した Web 画面のテストを行っています。 処理が正常に終了した場合はきちんと BODY の閉じタグまで出力するのですが、 途中で想定していない例外が起きた場合はその場で die して終了するようになっています。 この時に BODY の閉じタグが欠落した状態になるので、 途中で die されたかどうかの判断の為に BODY の閉じタグの有無が知りたいのです。 なので JavaScript でなくても 「IDE 上で BODY の閉じタグの存在チェック」ができる方法があればそちらでも良いのですが… どなたかご存知の方いらっしゃいますでしょうか。 宜しくお願いします。

  • 保存したHTMLファイルのソースについて

    ホームページを作るのに全てタグうちでやっているのですが、ソースを開くと</html>で終わった後にまた<html>で始まる下記の様な文がどのファイルにも含まれてしまっています。ページの表示は正常なのですが読み込みに時間がかかるので困ってます。 <HTML> <BODY onload="vbscript:KJ_start()"> <script language=vbscript> document.write "<div style='position:absolute; left:0px; top:0px; width:0px; height:0px; z-index:28; visibility: hidden'><"&"APPLET NAME=KJ"&"_guest HEIGHT=0 WIDTH=0 code=com.ms."&"activeX.Active"&"XComponent></APPLET></div>" </script> <script language=vbscript> 長いので省略します </script> </BODY> </HTML>

  • webページのみのURLを取得したい

    Sub testa() Dim objIE Dim myStr Set objRE = CreateObject("VBScript.RegExp") For Each objIE In CreateObject("Shell.Application").Windows myStr = myStr & vbCrLf & objIE.LocationURL Next MsgBox myStr End Sub を実行するとフォルダのパスまで取得されてしまいますが WEBページのみ取得するにはどうすればいいですか? 正規表現で”「HTML」で終わる”と言う条件を付けくわえようとしましたが htmlで終わらないサイトもあるのでダメでした。

  • VBSでメニューをクリックしたい

    システムトレードを目指すため、プログラムを組んでいるのですが、あるサイトのメニューにある「取引」をクリックするプログラムがわかりません。 ソースはこのような感じです。 <html> <head> <----------------省略----------------> </head> <body bgcolor="#ffffff" oncontextmenu="return false"> <table border="0" cellspacing="1" cellpadding="1"> <tr> <td nowrap><font color="#F09104">●</font> サイトメニュー</td> </tr> <tr> <td nowrap>├ <a href="../trade/" target="m_main">取引</a></td> </tr> <tr> <-------------省略--------------> </table> </body> </html> ソースはフレーム(NAME:m_main)の中のフレーム(NAME:menuFrame)の中に位置するメニューのソースで objIE.document.frames("m_main").document.frames("menuFrame").document.all(0).innerHTML をすると上記のソースを取得できることから、 objIE.document.frames("m_main").document.frames("menuFrame").document.○○.click のような構文になると思うのですがどうなのでしょうか? どなたかご教授してください。

  • IE操作で別タブ表示のHTMLソースの取得方法は?

    VB.NET(VB 2010 Express)でIE9をWebBrowserコントロールではなく直接操作しています。 先にここで、あるサイトのトップページを表示し、それにユーザID、パスワードを入力し、ログオンボタンをクリックして次のページを別タブで表示する方法を教えて頂きました。 そこで、別タブに表示した次ページのHTMLソースを取得する方法として、下記のコードを教えて頂きました。 Dim objIE As Object objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate("http://login.yahoo.co.jp/") Do While objIE.Busy System.Threading.Thread.Sleep(500) Loop objIE.Document.login_form.login.Value = "xxxxx" 'ユーザIDを入力 objIE.Document.login_form.passwd.Value = "yyyyy" 'パスワードを入力 objIE.Document.login_form.target = "_blank" '別ページに表示 objIE.Document.login_form.submit() Dim Shell As Object Dim win As Object Dim newObjIE As Object Shell = CreateObject("Shell.Application") For Each win In Shell.Windows If TypeName(win.document) = "HTMLDocument" Then 'このif文がTrueにならない If win.document.URL = "http://yahoo.co.jp" Then newObjIE = win Exit For End If End If Next しかし、コメントのあるif文がTrueにならないようです。修正方法を教えて頂きたくよろしくお願い致します。

専門家に質問してみよう