VBA:从HTML到MsgBox检索标签值
我有以下HTML代码,我想从中检索数据:
<div class="span4"> <div> <label for="Game_type">Portal Games</label> XXX </div> <div> <label for="Game_Reference">Game reference</label> 22130903 </div> <div> <label for="Release_Date">Release Date</label> 2015-07-13 </div> <div> <label for="Prise">Prise</label> USD 90,00 </div> <div> <label for="Game_Rank">Game Rank</label> 4 </div> </div>
我怎么能够获得所有这些标签值/至less一个值到MsgBox? (以后我会自己把它们input到Excel中)
我已经尝试使用下面的代码来获得第一个值:
Dim IE As Object Set IE = CreateObject("INTERNETEXPLORER.APPLICATION") 'page address is stated in code IE.navigate "page name" IE.Visible = True While IE.Busy 'Wait until IE is busy and loading page DoEvents Wend Set gtype = IE.Document.getElementsByClassName("span4")(0).getElementsById("Game_type") GtypeValue = gtype.Value MsgBox (GtypeValue) End Sub
我收到运行时错误“91:”
对象variables或With Blockvariables未设置。
150904希望最后一个问题,关于这个topic.Default代码看起来像
strCont = objIE.Document.getElementsByClassName("span4")(0).innerHTML
但我想有一个variables,而不是“span4”,在示例Dim1 =“span4”我状态如下:
strCont = "objIE.Document.getElementsByClassName(" & Chr(34) & Dim1 & Chr(34) & ")(0).innerHTML"
它不起作用,MsgBox中的空值。 我怎样才能确保这个刺将被视为精确的代码,以后在步骤中执行:
Set objMatches = .Execute(strCont)
为什么不尝试正则expression式parsing?
Sub MsgGameType() Dim objIE As Object Dim strCont As String Dim objMatches As Object Dim objMatch As Object Set objIE = CreateObject("InternetExplorer.Application") 'page address is stated in code objIE.Navigate "page name" objIE.Visible = True Do While objIE.Busy Or Not objIE.readyState = 4 DoEvents Loop Do Until objIE.document.readyState = "complete" DoEvents Loop strCont = objIE.document.getElementsByClassName("span4")(0).innerHtml With CreateObject("VBScript.RegExp") .Global = True .MultiLine = True .IgnoreCase = False .Pattern = "<div>\s*<label for="".*?"">(.*?)</label>\s*(.+?)\s*?</div>" Set objMatches = .Execute(strCont) For Each objMatch In objMatches MsgBox objMatch.SubMatches(0) & " = " & objMatch.SubMatches(1) Next End With End Sub
请参阅使用RegExp 免责声明的 XHTMLparsing。