2017-12-20 5 views
0

コードマスター!idを参照して要素のinnerTextを取得する方法は?

初心者はここ! idで要素を参照して.innerTextメソッドを使用してウェブサイトからテキストを掻き集めるツールを作成しようとしていましたが、一部のidsでは空白や区切りしか取得できませんでした。ここで

は、Webページのソースコードです:

<div id="empName"> 
 
    <h2>Employee Name</h2> 
 
    <div class="clear"></div> 
 
    <span style="font-family:Arial; font-weight:bold"> 
 
    <div id="empID">Employee ID</div> 
 
    </span>

ここに私のVBAコードがあります:イミディエイトウィンドウから示されているよう

Option Explicit 

Sub SampleCode() 

Dim IE As New SHDocVw.InternetExplorer 
Dim HTMLDoc As MSHTML.IHTMLDocument 
Dim EmployeeName As MSHTML.IHTMLElement 
Dim EmployeeID As MSHTML.IHTMLElement 
Dim URL As String 

URL = "www.example" 

With IE 
    .Visible = True 
    .FullScreen = True 
    .Navigate URL 
End With 

Do 
Loop Until IE.ReadyState = READYSTATE_COMPLETE And IE.Busy <> True 

Set HTMLDoc = IE.Document 
Set EmployeeName = HTMLDoc.getElementById("empName") 
Set EmployeeID = HTMLDoc.getElementById("empID") 

Debug.Print EmployeeName.tagName, EmployeeName.innerText, EmployeeID.tagName, EmployeeID.innerText 

IE.FullScreen = False 
IE.Quit 
Set IE = Nothing 

End Sub 

は、ここでの結果です:

DIV   Employee Name   DIV   

私はYouTubeからチュートリアルに従いましたが、 "empID" id属性からテキストを取得できませんでした。どんな提案も大歓迎です。

+0

それは動的にいくつかのイベントに基づいてJavaScriptで満たされている可能性があります。 JavaScriptを無効にするとブラウザに表示されますか?また、 'EmployeeID.outerHTML'をチェックして – Slai

+0

@Slaiを確認することができます。JavaScriptを無効にしようとしましたが、多くの情報がブラウザに表示されませんでした。 .outerHTMLでコードを実行すると、私はこの結果を得ます:

alvin

+0

"view source"のHTMLか、ブラウザのDeveloper Toolsなどからの実際のレンダリングされたHTMLですか?あなたのコードは正常に見えます。 –

答えて

0

テキストが満たされるまで待機して試すことができます:

timeout = Now + #0:00:05# ' to wait up to 5 seconds 

While EmployeeID.innerText = "" And Now < timeout 
    DoEvents 
Wend 

Debug.Print EmployeeID.innerText 
+0

出来た。大変ありがとう、@Slai。だから、私はJavaScriptが入り込むのを待つ必要がありますか?私はループが.readystate = 4まで十分だと思った。 – alvin

+0

@alvin私は、ドキュメントが完全に読み込まれてコンテンツが読み込まれるまで待つことを推測しています。READYSTATE_COMPLETEの後のビットです。 – Slai

+0

よろしくお願いします!ちゃんと覚えておきますよ。大変ありがとう、@Slai。私は本当にあなたの助けに感謝します。 – alvin

関連する問題