刮HTML数据Vba

时间:2016-02-13 03:34:20

标签: vba excel-vba web-scraping getelementbyid scrape

不会说英语。

需要一些帮助,我想创建一个从网站的一部分中提取数据的函数 关注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

我需要只提取类“panel-body” 直接进入功能,我想会是.children(3)不知道,你能帮助我吗?因此它实用且快速,因为我需要提取超过50个站点。

感谢

2 个答案:

答案 0 :(得分:0)

我至少看到两个选项。

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

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

  2. 第二个是在MSHTML的更高版本中,我认为在IE8或更高版本中安装了你的方法" GetElementsByClassName"这将返回IHTMLElements的集合。如果HTMLDocument只有1" panel-body"那你很幸运如果没有,你需要遍历每一个,并检查一些其他独特的功能,以确定你有正确的。

答案 1 :(得分:0)

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

在功能区的数据选项卡上,有一个选项从外部源获取数据。如果你使用它,它会给你一个点击界面,让你选择你想要的表格。在执行此操作时记录宏,它会为您生成代码。