我想从网站上抓取源代码,然后解析代码。不幸的是,当我定义一个等于站点的innerHTML的变量时,它并没有提取网站的所有源代码。它只是拉动源代码的一个子集,而子集不包含我需要的任何数据(竞赛结果)。那里有一个我可以使用的不同命令? (document.all.innerhtml?)
我的代码如下:
Sub Test()
Set objIE = CreateObject("InternetExplorer.Application")
URL = 'URL goes here
objIE.navigate (URL)
Do
DoEvents
Loop Until objIE.readyState = 4
htmlData = objIE.document.DocumentElement.innerHTML
MsgBox htmlData
If InStr(htmlData, "<tr class=&Chr(34)&again_bg_table&chr(34)&>") > 0 Then
'parse code
Else
MsgBox "The VBA procedure is not designed to parse this webpage. Please modify the code"
End If
End Sub
答案 0 :(得分:0)
我使用responseText变量而不是innerHTML变量。 但是,如果您打算继续使用IE对象,请参阅此链接:http://www.excely.com/excel-vba/ie-automation.shtml
或者使用“MSXML2.ServerXMLHTTP”,例如
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "YOUR URL"
objHTTP.Open "GET", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
html = objHTTP.responseText
EDIT1:为了将来使用抓取/解压缩HTML,我建议使用我的Scrape HTML加载项:http://analystcave.com/excel-scrape-html-add/ 优点是不需要编写任何额外的VBA - 只需指定正确的正则表达式来捕获所需的内容。