概要:
InternetExplorer.application .document.all(0).innerHTML で 読み込んだページのソースを表示 |
リンク 分類:
[Document(文章)からデータを取得]
/ [Form入力処理]
/ [Linkリンク情報]
/ [Image画像情報]
/ [Frameフレーム処理]
サンプル:
[IEを使ったVBAのサンプル]
/ [小さなVBAでIE操作のコード]
やっと、下記、メルマガで発行した内容です。何かの参考となれば幸いです。
過去のメルマガ[IE操作系の記事一覧]もヨロシクです。
こんにちは、三流プログラマーKen3です。 今回は、 掲示板に質問があった、 彼女のすべてをのぞきたい、全てを取得したい。 じゃなくって、 IEでHTMLソースすべてを取得したい です。 溜まっているオヤジギャグは置いといて、はじめますか? (何が溜まっているって?駄目だよ変な想像したら・・・ 想像したのがたぶんあたりだけど、と回答を書かないのがKen3流の文章)/* * 1.今回のキッカケ */
掲示板に来た質問です。※何か質問あったら遠慮なく、回答遅いけど。 --- >投稿時間:2003/05/02(Fri) 19:13 >投稿者名:nori >タイトル:はじめまして > >はじめまして。 >早速ですが、vba解説のNo.50 IE起動に関する質問があります。 > >Dim objIE As ObjectobjIE.Navigate "http://..." >Dim strHTML As String >strHTML = objIE.document.body.innerHTML > >でhtmlソースを取り出す事は出来ましたが、<body>内しか取り出せません。 >objIE.document.title >で<title>内も取り出せることは分かりましたが、<head>内すべてを取り出す事 >は出来るのでしょうか? >htmlにあまり詳しくないもので、解決しません。そもそも、<html>内は取り出 >せなくて当たり前なのでしょうか。愚問かもしれませんが、お返事よろしくお >願いします。 --- さて、やりたいことを整理して、 と思ったら、もう整理されてますね。 ・<head>内のソースを取得したい ・htmlの全てのソースを取得したいかぁ。/* * 2.IEオブジェクトの中身を探れ(手ごわい彼女の心の中?) */
[No.50 IE起動 CreateObject("InternetExplorer.application")] ( http://www.ken3.org/vba/backno/vba050.html を参照) では、IEの起動方法を書きました。 [No.52 InternetExplorer.application .document.body.innerText] ( http://www.ken3.org/vba/backno/vba052.html を参照) では、 彼女(オブジェクト)の中身を探る方法を少し書きました。 それにしても、階層が深いです。 テーブル系のオブジェクトを探すが、なかなか見つからない。 (女の子じゃなくって、IEの心の中は複雑なのね、、、) 女心を探るのは下手だけど、オブジェクトの中身見るのは少しできるよね? なんて、馬鹿なこと言ってないで、ブレークポイントをはって、止めます。 いやらしい目で頭から探っていくと(ほんとは真剣な目ですよ) objIE.document.の下に、 .allなんてそれらしいのあるじゃないですか。 読者の人に見せたくないニャっとした顔で、 ? objIE.document.all(0).innerHTML とやってみると、ヘッダから情報が入ってました。 これを使えばなんとかできそうです。 下記Ken3がいやらしい目で見てたIEのオブジェクト/* * 3..document.all(0).innerHTMLにいつも入っているのか?疑問だけど */
.document.all(0).innerHTML と 0番目にいつも入っているのか?疑問だけど、 下記のようにテストしてOKでした。
Sub ie_get_html() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) 'ランキングのページに飛ぶ objIE.Navigate "http://www.ken3.org/cgi-bin/lime/limemgr.cgi" '表示されるまで待つ、10秒後にエラーを判断する Dim time10 As Date '時刻格納用 time10 = DateAdd("s", 10, Now()) '現在から10秒後を計算 Do While objIE.Busy = True 'ビジー、読み込み中の間 DoEvents If time10 < Now() Then '10秒経過したか? MsgBox "タイムアウトです" Exit Sub End If Loop 'HTMLソースを取出す Dim strHTML As String strHTML = objIE.document.all(0).innerHTML '変数に代入 MsgBox strHTML 'テスト表示 Debug.Print strHTML 'イミディエイトにも表示 End Sub |
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。