Ich würde gerne wissen, ob es eine einfache Möglichkeit gibt, HTML in vb.net zu analysieren. Ich weiß, dass HTML keine strenge Teilmenge von XML ist, aber es wäre schön, wenn es so behandelt werden könnte. Gibt es da draußen etwas, das HTML in XML-ähnlicher Weise in VB.net parsen lässt?Wie parst du einen HTML in vb.net
Antwort
Ich mag Html Agility pack - es ist sehr Entwickler freundlich, frei und Quellcode ist verfügbar.
Aber Selbstdokumentation Code Entwickler freundlich ist. Ich verstehe, dass der Begriff "entwicklerfreundlich" sehr subjektiv sein kann, jedoch habe ich verschiedene Methoden zum parsen/modifizieren von HTML-Code ausprobiert und dieses ist einfach das Beste (für .NET und für gebührenfrei), was man bekommen kann und fehlende Dokumentation ändere es nicht. Es ist grausame Realität. – TcKs
Ich konnte das HTML-Agility-Paket nicht dazu bringen, etwas Nützliches für mich zu tun. Alles, was ich bekam, war die direkte HTML-Ausgabe in die Textbox anstelle des geparsten formatierten HTML. –
@JoelR. Du hast etwas schrecklich falsch gemacht. Hast du ein paar Tutorials dazu gelesen? – TcKs
Ist es gut geformt? Wenn der HTML-Code tatsächlich gut geformt ist, kann er als XML analysiert werden. Wenn es Tag-Suppe ist und es unverschlossene Elemente gibt, würde ich denken, dass Sie nach einer Lösung von Drittanbietern suchen müssten.
Was ist mit dem Zugriff auf das Dokumentobjektmodell (dom) mit mshtml geschehen? –
Wenn Ihr HTML-Code den XHTML-Standards entspricht, können Sie viel Parsing und Verarbeitung mit den System.XML-Namespace-Klassen durchführen.
Wenn auf der anderen Seite, was Sie analysieren, was Webentwickler als "Tag-Suppe" bezeichnen, benötigen Sie einen Parser wie HTML Agility Pack von Drittanbietern.
Dies ist möglicherweise nur eine Teillösung für Ihr Problem, wenn Sie herausfinden möchten, wie ein Browser Ihren HTML-Code interpretieren wird, da jeder Browser Tag-Suppe etwas anders analysiert.
'prog ref hinzufügen zu: Microsoft.mshtml
' dann auf der Seite:
Imports mshtml
Function parseMyHtml(ByVal htmlToParse$) As String
Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass()
htmlDocument.write(htmlToParse)
htmlDocument.close()
Dim allElements As IHTMLElementCollection = htmlDocument.body.all
Dim allInputs As IHTMLElementCollection = allElements.tags("a")
Dim element As IHTMLElement
For Each element In allInputs
element.title = element.innerText
Next
Return htmlDocument.body.innerHTML
End Function
Als here gefunden:
verwendet dies nicht im Wesentlichen die gleichen Bibliotheken, die IE verwendet, um sein DOM zu laden? Ich habe das schon mal probiert, aber es fühlt sich immer so dreckig an .... – tooleb
Verwenden Agilität Pack nicht, verwenden Sie einfach mshtml Bibliothek Zugriff auf die dom, das ist, was ie verwendet und eignet sich hervorragend für HTML-Elemente.
Agility Pack ist böse und unnötig hickie, wenn Sie mich fragen, mshtml ist der Weg zu gehen. Schaut es euch auf msdn an.
Es könnte uns helfen zu beantworten, wenn Sie angeben, was Sie damit tun wollen, sobald es geparst ist. – Rob
Im Moment bin ich daran interessiert, alle Links, Texte und Bilder in bestimmten divs auswählen zu können. Wo die Div-Klasse oder ID von Seite zu Seite wechseln wird. – tooleb
es klingt wie HTML Agility Pack wird wahrscheinlich für mich arbeiten. Gibt es noch andere Optionen ???? – tooleb