0

Je suis en train d'extraire divers éléments de cette page:texte à partir du tableau HTML Extraction

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

Je veux commencer par ctl00_BodyContentPlaceHolder_lblSerialNumber.

Sûrement il doit y avoir une solution facile pour extraire les éléments que vous voulez de la page HTML si vous connaissez l'ID? Je pensais quelque chose comme getElementsByName ou getElementById ou même getElementsByTagName fonctionnerait mais je ne peux pas l'obtenir pour extraire ce que je veux, essayer comme je pourrais!

Cela ne fonctionne pas:

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 

Calling

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 

Répondre

1

getElementById() devrait être tout ce que vous avez besoin, puisque le noeud a un attribut ID. Vous rencontrez peut-être un problème, car vous essayez d'affecter responseText au corps du document, mais le document n'a pas encore de nœud <body>. Utilisez simplement write() pour écrire toute la réponse dans le document vide. Voici un exemple que je lançai ensemble qui renvoie la valeur appropriée:

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 

Sortie:

4CE0460D0G 
+0

Ce ŒUVRES merci – jquerynewbie