HTML downloaden, XML parsen, Objekte erzeugen? Nope...
-
Hallo,
Ich habe für meine Applikation eine Liste von Source-Sites im Internet bekommen, welche ich mit einem WebClient downloaden kann. Im HTML drin sind einige Elemente, identifiziert mit
<div class="...">
, welche für mich essentielle Informationen beinhalten. Anhand eben dieser Informationen soll ich schreibgeschützte Objekte erzeugen und anzeigen. Im Prinzip entwickle ich also eine Art GUI für Websites.Mein Frage ist: Wie komme ich an diese Daten möglichst systematisch heran? Ich wollte eigentlich LINQ to XML verwenden, aber natürlich ist das HTML dermassen zerschossen ("malformed"), dass ich mit dem XML-Parser von .NET keine 5 Zeilen weit komme, bevor mir die erste Exception um die Ohren fliegt. Erschwerend kommt hinzu: Keine externen Libraries sind möglich und ich möchte den Code möglichst kurz halten.
Was sind meine Alternativen?
MfG
-
Hi,
sind reguläre Ausdrücke vielleicht eine Möglichkeit, wo du nach Expressions der Form <div class="...">(.*)</div> suchst?
-
Gleich kommt ein Klugscheißer und erklärt, dass html keine reguläre Sprache ist.
Zu spät
-
Jetzt weiss ich wieder, warum ich die Webprogrammierung und insbesondere HTML immer gehasst habe.
<br>
killt natürlich den XML Parser. Genau wie<img...>
oder inline JavaScript. Oder
. Warum ist HTML immer noch dermassen unstrukturiert?Mit einem extrem hässlichen "Skript" von 20 Zeilen Lambdas und hardcore String-Operationen habe ich alles, was irgendwie malformed war - und noch einiges mehr - aus dem HTML-Code entfernt. Natürlich geht es nur mit den Seiten, die ich gerade betrachte.
Ich bin mal einen LINQ to XML Parser für die Objekte am schreiben. Danke und gute Nacht
MfG
-
Such mal in der MSDN nach MSHTML. MSHTML ist eine COM-Komponente, welche man auch in C# verwenden kann. Ich muss allerdings sagen, dass ich damit noch nie gearbeitet habe, habe nur mal irgendwo darüber gelesen.
Eine Thirdparty Bibliothek gäbe es:
http://htmlagilitypack.codeplex.com/Ich setze die hier mal rein, falls jemand über die Suche auf diesen Thread stolpert und nicht der gleichen Einschränkung unterliegt
Grüssli
-
Das Html Agility Pack ist super!
-
Manchmal reicht schon ein einfaches System.Web.HttpUtility.HtmlDecode() ...
-
schmidt-webdesign.net schrieb:
Manchmal reicht schon ein einfaches System.Web.HttpUtility.HtmlDecode() ...
Hmmm. Falscher Link oder inwiefern löst HtmlDecode das Problem?
-
schmidt-webdesign.net schrieb:
Manchmal reicht schon ein einfaches System.Web.HttpUtility.HtmlDecode() ...
Gehe ich richtig in der Annahme, dass diese Methode auf den Inhalt eines Tags angewendet werden muss? Dann kann ich sie gut gebrauchen, denn bisher mache ich das von Hand. Für malformed HTML nützt das aber natürlich nichts.
MFG