刮掉html数据Vba

问题描述:

不会说英语。刮掉html数据Vba

需要一些帮助,我想打从一个网站 的部分中提取数据的功能如下的HTML网站 CODE HTML

码功能。

Function GetElementById(url As String, id As String, Optional isVolatile As Boolean) 
    Application.Volatile (isVolatile) 
    On Error Resume Next 
    Dim html As Object, objResult As Object 
    ret = GetPageContent(url) 
    Set html = CreateObject("htmlfile") 
    html.Body.innerHtml = ret 
    Set objResult = html.GetElementById(id) 
    GetElementById = objResult.innerHtml 
End Function 

我需要一个只提取类“面板体”直接进入 的功能,我认为这将是。孩子(3)不知道,你能帮帮我吗?所以它是实用和快速的,因为我需要提取超过50个站点。

谢谢

我看到至少有两个选项。

  1. 一旦你拥有id = Result的HTMLDivElement,你就可以简单地得到子元素。请首先测试objResult.Children(2)并检查返回的元素是什么。

    objResult.Children(2)。儿童(0)。儿童(0)

  2. 第二个是,在MSHTML的后续版本,我认为与IE8或更高版本你有方法“getElementsByClassName方法”这将返回IHTMLElements的集合。如果HTMLDocument只有1个“panel-body”,那么你很幸运。如果没有,你需要遍历每一个,并检查一些其他独特的功能,以知道你有正确的。

+0

我尝试了两种方式, (1)它毫无结果 设置objResult = html.GetElementById(ID) 的getElementById = objResult.Children(2)。儿童(0)。儿童(0).innerHTML (2)导致0 Set objResult = html.GetElementById(id) GetElementById = objResult.Children(2).innerHTML –

为此作业生成代码的另一种方法是录制一个宏,然后在录制的宏周围添加一个循环,循环遍历您的50个页面并获取结果。

在功能区的数据选项卡上有一个选项从外部来源获取数据。如果你使用它,它会给你一个点击界面,让你选择你想要的桌子。当你这样做的时候记录一个宏,它会为你生成代码。