0

我正在尝试从 GM Parts 网站自动创建一系列零件编号值的描述列表。

例如,以下是部件号 23498355 的链接 - http://www.gmpartsdirect.com/oe-gm/23498355

我正在尝试获取零件描述文本“此 ABS 传感器是真正的 OEM GM 零件 #23498355,并提供工厂保修。我们提供最优惠的在线价格,并为我们下的任何订单提供快速发货。” 可在此网页上导入 Excel。

我编写了以下代码来获取该信息,但无法完成可以获取此特定信息的最后几行。

Option Explicit

Sub myConnection()
    Dim oHtml, myData, Title, cste
    Set oHtml = New HTMLDocument
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", "http://www.gmpartsdirect.com/oe-gm/23498355", False
        .send
        oHtml.body.innerHTML = .responseText
    End With
'Rest of the code to grab the exact part description
End Sub

一旦我得到这个工作,这个想法就是自动化处理零件编号列表。谁能帮我完成这段代码?

4

1 回答 1

1

使用 MSHTML 解析您的 HTML 有点受限,因为许多“现代”文档方法可能无法实现,但您可以在这种情况下使其工作:

Sub myConnection()
    Dim oHtml, myData, Title, cste, d
    Set oHtml = New MSHTML.HTMLDocument


    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", "http://www.gmpartsdirect.com/oe-gm/23498355", False
        .send
        oHtml.body.innerHTML = .responseText

        Set d = myGetElementsByClassName(oHtml, "div", "description_body")
        If Not d Is Nothing Then
            Debug.Print d.innerText
        End If

    End With
'Rest of the code to grab the exact part description
End Sub


'return an element given its tag name and class name
Function myGetElementsByClassName(doc, tagName, className) As Object
    Dim el As Object
    For Each el In doc.getElementsByTagName(tagName)
        If el.className = className Then
            Set myGetElementsByClassName = el
            Exit Function
        End If
    Next el
    Set myGetElementsByClassName = Nothing
End Function
于 2016-12-08T00:19:41.337 回答