0

部品番号の値の範囲について、GM Parts Web サイトからの説明のリストの作成を自動化しようとしています。

たとえば、部品番号 23498355 のリンクは次のとおりです - http://www.gmpartsdirect.com/oe-gm/23498355

パーツの説明テキスト「この ABS センサーは、純正の OEM GM パーツ #23498355 であり、工場保証が付いています。当社は、注文を迅速に発送する最高のオンライン価格を提供します。」この Web ページで 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 に答える