从HTML中的嵌套DIV中检索标签值

时间:2015-09-14 10:34:07

标签: html excel vba excel-vba

我在HTML中有以下代码,我从中检索标签值。

<div class="span4">
<div>
   <label for="Game_type">Portal Games</label>
     XXX
</div>
</div>

检索价值&#34;门户网站游戏&#34;我正在使用以下功能:

Function ExtractPaymentDetailesByName()

var1 = "Game_type"
Dim1 = "span4"
DimNumber = "0"



balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*(.*)\s*</div>"
strCont = IE.Document.getElementsByClassName(Dim1)(DimNumber).innerHTML

With CreateObject("VBScript.RegExp")
    .Global = True
    .MultiLine = True
    .IgnoreCase = False
    .Pattern = balx
    Set objMatches = .Execute(strCont)
    For Each objMatch In objMatches
         FinalValue = objMatch.SubMatches(0)
    Next
End With

End Function

一切都很迷人。但是,如果初始HTML代码内部有ID并且是嵌套的,我将面临真正的问题。

<div class="row-fluid" id="debet-credit-section">

    <div class="panel span6" id="debitPanelPrinterStyle">
        <h3>Debit information</h3>

        <div class="panel-content horizontal-align-large" id="DebitPanel">
            <div>
                <label for="Payment_DebitAmount">Debited amount</label>
                USD
                979,63
            </div>
        </div>
    </div>
</div>

我正在尝试检索价值&#34;借记金额&#34;我正在使用上述所有内容,仅使用GetElemntById:

Div1 = "DebitPanel"
strCont = IE.Document.getElementById(Div1).innerHTML

如果我使用FinalValue制作MsgBox - 它会给我空白的MsgBox。 我注意到如果嵌套的DIVS在ID字段中具有完全独特的措辞,那么我的代码就可以工作了。例如,在我的代码中 - 它是debitPanelPrinterStyle和DebitPanel,没有任何作用,但如果值如下 - 一切正常。

<div class="panel span6" id="debitPrinterStyle">
<div class="panel-content horizontal-align-large" id="DebitPanel">

我正在通过Excel进行编码。

更新

似乎我发现了问题所在:

balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*(.*)\s*</div>"

定义patern值的代码仅在&#34;标签&#34;之后仅限于1行。 例如,代码如下:|

<div>
   <label for="Game_type">Portal Games</label>
     XXX
</div>

但是如果你在XXX之后添加另一行 - patern将无效,并且最后将返回空的MsgBox。

<div>
                <label for="Payment_DebitAmount">Debited amount</label>
                XXX
                979,63
            </div>

我试图重组帕特,但不是很成功。最后一个选项是:

balx = "<div>\s*<label for=""" & var1 & """>(.*)</label>\s*([\s\S])*\s*</div>"

它给了我价值&#34;借记金额&#34;,考虑到我要求第一次子匹配:

FinalValue = objMatch.SubMatches(0)

调用子匹配(1) - 将导致空框。

有人能解释一下这些案件的正确理由是什么吗?

0 个答案:

没有答案