J'essaie d'extraire des titres de brevets américains en utilisant MSXML6. Sur la vue html texte intégral d'un document de brevet sur le site Web de l'USPTO, le titre du brevet apparaît comme le premier et unique élément "police" qui est un enfant de "corps".Comment extraire le texte d'un seul élément HTML par nom de tag à l'aide de MSXML dans VBA?
Voici ma fonction qui ne fonctionne pas (je n'obtiens aucune erreur, la cellule avec la formule reste vide).
Quelqu'un peut-il m'aider à comprendre ce qui ne va pas?
Un exemple d'URL que je nourrissais dans la fonction est http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=6293874.PN.&OS=PN/6293874&RS=PN/6293874
Function getUSPatentTitle(url As String)
Static colTitle As New Collection
Dim title As String
Dim pageSource As String
Dim xDoc As MSXML2.DOMDocument
Dim xNode As IXMLDOMNode
On Error Resume Next
title = colTitle(url)
If Err.Number <> 0 Then
Set html_doc = CreateObject("htmlfile")
Set xml_obj = CreateObject("MSXML6.XMLHTTP60")
xml_obj.Open "GET", url, False
xml_obj.send
pageSource = xml_obj.responseText
Set xml_obj = Nothing
Set xDoc = New MSXML2.DOMDocument
If Not xDoc.LoadXML(pageSource) Then
Err.Raise xDoc.parseError.ErrorCode, , xDoc.parseError.reason
End If
Set xNode = xDoc.getElementsByTagName("font").Item(1)
title = xNode.Text
If Not title = "" Then colTitle.Add Item:=title, Key:=url
End If
On Error GoTo 0 ' I understand "GoTo" is dangerous coding but copied from somebody and so far haven't thought of a more natural substitute for a GoTo statement
getUSPatentTitle = title
End Function
Merci codersl - je devais ajouter une référence: Outils> Références> Microsoft HTML Object Library, et il fonctionne. Je savais qu'il y avait des éléments de police "ear" mais j'essayais de trouver le premier directement sous "body" et j'ai oublié de changer l'index. Aussi, je vois que c'est apparemment basé sur zéro. N'y a-t-il pas une méthode "select" dans VBA analogue à la méthode Jsoup en Java où je pourrais dire quelque chose comme 'Element element = Document.select (" html> body> font "). Get (0)'? Dans ce cas, cela fonctionnerait mieux car parfois il peut y avoir un autre élément "font" au-dessus du titre, mais à l'intérieur d'une table. – PatentWookiee
Malheureusement, je ne connais pas de méthode "select" équivalente dans VBA. – codersl