2017-03-11 10 views
3

ウェブページからinnerTextをすべて取得するにはどうすればよいですか? - 以下のコードを使用すると最初の行だけが得られ、<p> "段落"タグはこの読み取りを停止します。このショットのようなものを与えるが、このボックスに次の行を取得する方法を見つけ出すことができない...すべてのinnertextを取得する

Set ie = CreateObject("InternetExplorer.application") 
ie.navigate ("https://www.xxxx.com/") 
While ie.Busy Or ie.ReadyState <> 4: DoEvents: Wend 
vCompanyAddress(i - 1) = ie.document.all("header-left-box").innerText 
more code.... 
End Sub 

Here is the website stuff

+1

'GetElementById'メソッドを試しましたか?例えば'vCompanyAddress(i - 1)= ie.document.body.getelementbyid(" header-left-box ")。innerText'です。 vbCrLFまたはvbLf文字で区切られた文字列内に複数行のテキストがないことは確かですか? – Jeeped

+0

実行時エラー '438':オブジェクトはこのプロパティまたはメソッドをサポートしていません。悲しい顔 - しかし、今私は冷静です - それはすべて/それをキャプチャした、私はExcel内のセルに結果を書いた。数式バーを展開してセル全体を表示すると、セル内にCRLFが表示されます。それは私が質問を掲示したとき私はちょうどばかだった私はすべて一緒に働いた。 –

答えて

3

- 私はvCompanyCityなどを追加する大丈夫だろう。あなたのポストにはいくつかの詳細がないので、私はいくつかの仮定をしなければなりませんでした。

1)使用getElementByIdをとはInnerTextプロパティが

2を返す場合)を参照してください使用getElementByIdをして、段落タグを反復:

は、以下の二つのアプローチがあります。

Public Sub test() 
    Dim ie    As Object 
    Dim vCompanyAddress As Variant 
    Dim i    As Long: i = 0 
    Dim Elements  As Object 
    Dim Element   As Object 

    ReDim vCompanyAddress(1000) ' Not sure how big this array should be 
    Set ie = CreateObject("InternetExplorer.Application") 

    With ie 
     .navigate ("https://www.xxxx.com/") 
     While .Busy Or .ReadyState <> 4: DoEvents: Wend 
     'You can try two things, this: 
     vCompanyAddress(i) = .document.getElementById("header-left-box").innerText 

     'Or you can try this, get the element then create an element 
     'collection with all paragraphs tags 
     Set Elements = .document.getElementById("header-left-box").getElementsByTagName("p") 

     For Each Element In Elements 
      vCompanyAddress(i) = Element.innerText 
      i = i + 1 
     Next 
    End With 
End Sub 
関連する問題