不能用VBA刮掉所有的html源代码

时间:2014-08-17 07:57:58

标签: html excel vba html-parsing

我想从网站上抓取源代码,然后解析代码。不幸的是,当我定义一个等于站点的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

1 个答案:

答案 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 - 只需指定正确的正则表达式来捕获所需的内容。