【问题标题】:Get web table value with VBA使用 VBA 获取 web 表值
【发布时间】:2012-11-27 04:13:49
【问题描述】:

我在从 this website 提取数据时遇到问题。

我尝试使用 Excel 网络查询(通常适用于网站中的其他页面,但无法检索此特定网站的数据)。

我通过网页的“检查元素”来使用响应文本并操作文本,但在这种情况下,我发现正文具有“文本 - 空文本节点”,这使得几乎无法处理文本。

【问题讨论】:

  • 您提供的链接无效。你想提取什么样的数据?
  • 嗨@Ian O'Brien,该链接在使用谷歌浏览器时无法使用,但在互联网探索中可以正常使用。
  • @IanO'Brien 我是这个论坛的新手,这里的网站 [bmreports] (bmreports.com/bsp/…) 我不确定我是否可以在 VBA 中使用 HTML 来处理这类数据,问题是[bmrport.com] 中的某些页面格式正确,某些页面(bmreports.com/bsp/…)处理起来相当复杂。下面是我想从中获取信息的 HTML 代码示例:DATE S/P 谢谢
  • 那个页面有导出到 csv 的选项……那不包含相关数据吗?
  • @Pynner 是的,确实如此,这正是我想要的,但我不知道如何单击 cvs 并使用 vba 保存文件。理想情况下,我应该能够在该网页上设置一个 outomation,或者从 HTML 中提取日期,或者单击 cvs 并保存文件。任何想法?谢谢

标签: html vba web-scraping


【解决方案1】:

我不喜欢它,但这是我能想到的最好的。将 Debug.Print 行更改为有用的东西。您需要设置对 Microsoft Internet 控件和 Microsoft HTML 对象库的引用。

Public Sub GetReports()

    Dim ie As InternetExplorer
    Dim hDoc As MSHTML.HTMLDocument
    Dim hTbl As MSHTML.HTMLTable

    Set ie = New InternetExplorer
    ie.Navigate2 "http://www.bmreports.com/bsp/BMRSSystemData.php?pT=DDAD&zT=N&dT=NRT"

    Do
        DoEvents
    Loop Until ie.readyState = READYSTATE_COMPLETE

    Set hDoc = ie.document

    Set hTbl = hDoc.getElementsByClassName("tablesorter").Item(0)

    Debug.Print hTbl.innerText

    ie.Quit

End Sub

【讨论】:

  • 它并不完美,但它是一个很好的起点。你知道如何按下 CSV 底部并保存 csv 文件吗?
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多