【问题标题】:Extracting text from HTML table从 HTML 表格中提取文本
【发布时间】:2015-11-13 10:10:14
【问题描述】:

我正在尝试从此页面中提取各种元素:

http://partsurfer.hp.com/Search.aspx?searchText=4CE0460D0G

我想从ctl00_BodyContentPlaceHolder_lblSerialNumber开始。

如果您知道 ID,肯定有一个简单的解决方案可以从 HTML 页面中提取您想要的元素吗?我认为像 getElementsByNamegetElementById 甚至 getElementsByTagName 这样的东西会起作用,但我无法提取我想要的东西,尽我所能!

这不起作用:

 Function GetHPModelName()

     Dim ie As Object
        Dim Oelement As Object
        Dim Ohtml As New MSHTML.HTMLDocument
        Dim lrow As Integer

        With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", "http://partsurfer.hp.com/Search.aspx?searchText=" & Worksheets("HP_Lookup").Range("A2").Value, False
        .send
        Ohtml.body.innerHTML = .responseText

        End With


    FetchHPInfo "ctl00_BodyContentPlaceHolder_lblSerialNumber", "A", Oelement, Ohtml 
End Function

打电话

Public Function FetchHPInfo(tablename As String, thiscolumn As String, Oelement As Object, Ohtml As MSHTML.HTMLDocument)
lrow = 1
For Each Oelement In Ohtml.getElementsById(tablename)
    Worksheets("HP_main").Range(thiscolumn & lrow).Value = Oelement.innerText
    lrow = lrow + 1
    Next Oelement
    Worksheets("HP_main").Columns(thiscolumn).cells.HorizontalAlignment = xlHAlignLeft
    Worksheets("HP_main").Columns(thiscolumn).AutoFit
End Function

【问题讨论】:

    标签: vba web-scraping getelementbyid getelementsbytagname getelementsbyclassname


    【解决方案1】:

    getElementById() 应该是你所需要的,因为节点有一个 ID 属性。您可能会遇到问题,因为您尝试将 responseText 分配给文档正文,但文档还没有 <body> 节点。只需使用write() 将整个响应写入空文档。下面是我汇总的一个返回正确值的示例:

    Dim objHttp
    Set objHttp = CreateObject("MSXML2.XMLHTTP")
    objHttp.Open "GET", "http://partsurfer.hp.com/Search.aspx?searchText=4CE0460D0G", False
    objHttp.Send
    
    Dim doc
    Set doc = CreateObject("htmlfile")
    doc.write objHttp.responseText
    
    MsgBox doc.getElementById("ctl00_BodyContentPlaceHolder_lblSerialNumber").innerText
    

    输出:

    4CE0460D0G
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多