2016-12-09 20 views
0

VBAを使用してExcelでの作業を簡単にしようとしていますが、これまでは素晴らしいことでした。しかし、現在、私はHTML私は私の人生のためにカント文書が把握:VBAを使用したHTMLでの要素の検索

を第一に、ここに私の現在のコードは次のとおりです。

Enum READYSTATE 
    READYSTATE_UNINITIALIZED = 0 
    READYSTATE_LOADING = 1 
    READYSTATE_LOADED = 2 
    READYSTATE_INTERACTIVE = 3 
    READYSTATE_COMPLETE = 4 
End Enum 

Public Sub GetData() 

    Site = InputBox("Enter Website Link ", "Enter Product Link") 

    Dim ie As InternetExplorer 

    Dim html As HTMLDocument 

    Set ie = New InternetExplorer 
    ie.Visible = False 
    ie.navigate Site 

    Do While ie.READYSTATE <> READYSTATE_COMPLETE 
    Application.StatusBar = "Trying to go to Product Page..." 
    DoEvents 
    Loop 

    Set html = ie.document 

    Set ie = Nothing 
    Application.StatusBar = "" 

    Dim Title As String 
    Dim Description As String 
    Dim Vendor As String 
    Dim Image As String 
    Dim PType As String  

    Vendor = ??? 
    Image = ??? 
    Title = html.getElementsByClassName("name")(0).innerText 
    Description = html.getElementsByClassName("specs block")(0).outerHTML 
    PType = html.getElementsByClassName("kind")(0).innerText 

    Cells(ActiveCell.Row, 2) = Title 
    Cells(ActiveCell.Row, 3) = Description 
    Cells(ActiveCell.Row, 4) = Vendor 
    Cells(ActiveCell.Row, 5) = PType 


End Sub 

私は何を探していることだけでなく(以下、「ブランド」と呼ばれる)は、そのベンダーの変数であります画像リンクとして、値を表示するHTMLのスニペットを示します。

<meta itemprop="brand" content="Intel" /> 
    <meta itemprop="image" content="http://ecx.images-amazon.com/images/I/510BosCAMcL.jpg" /> 

ラインの「内容」は、私が探しているものです。

ありがとうございます、ありがとうございます!

(PS HTMLは、このリンクから来ている:。https://pcpartpicker.com/product/W67wrH/intel-cpu-bx80646g1820

答えて

1

あなたがそれらとにitemprop文字列を

をチェックすることで、ブランドやイメージをつかむをループすることができ、すべてのmeta要素を取得しようとしているので、

編集:質問からmetaElements行を削除したようです。

Set metaElements = html.all.tags("meta") 

Dim brandFound As Boolean 
Dim hElement As IHTMLElement 
brandFound = False 
For Each hElement In metaElements 
    If InStr(1, hElement.outerHTML, "itemprop=" & Chr(34) & "brand" & Chr(34)) <> 0 Then 
     Vendor = hElement.Content 
     brandFound = True 
    End If 
    If brandFound = True Then 
     If InStr(1, hElement.outerHTML, "itemprop=" & Chr(34) & "image" & Chr(34)) <> 0 Then 
      Image = hElement.Content 
      Exit For 
     End If 
    End If 
Next hElement 
+0

ありがとうございます!私はそれが使用されるかどうかわからなかったので、私はmetaElemetsを削除しました。 –

+0

役立つ、完璧に動作します! –

関連する問題