HtmlAgilityPack und HtmlDecode

html-agility-pack

Frage

Ich verwende derzeit HtmlAgilityPack mit einer Konsolenanwendung, um eine Website zu scrappen. Da der HTML-Code codiert ist (codierte Zeichen wie ' zurückgibt), muss ich dekodieren, bevor ich den Inhalt in meiner Datenbank speichern kann.

Gibt es eine Möglichkeit, den zurückgegebenen HTML-Code mit HtmlAgilityPack zu dekodieren, ohne HttpUtility.HtmlDecode verwenden zu müssen? Ich möchte vermeiden, System.Web meiner Konsolenanwendung hinzuzufügen, wenn möglich.

Akzeptierte Antwort

Das Html Agility Pack ist mit einer HtmlEntity namens HtmlEntity . Es hat eine statische Methode mit folgender Signatur:

    /// <summary>
    /// Replace known entities by characters.
    /// </summary>
    /// <param name="text">The source text.</param>
    /// <returns>The result text.</returns>
    public static string DeEntitize(string text)

Es unterstützt bekannte Entitäten (wie &nbsp; ) und codierte Zeichen wie &#039; auch.


Beliebte Antwort

HttpUtility.HtmlDecode einfach meine 2 Cents hinzu: Ich habe einige Leistungstests mit der StopWatch Klasse ausgeführt und festgestellt, dass HttpUtility.HtmlDecode ungefähr 15-20% schneller ist als die DeEntitize Methode. Auch DeEntitize hat einige Bugs (siehe Kommentare oben).

Vielleicht ist die Referenzierung von System.Web gar nicht so schlimm.

Wenn Sie eine App schreiben, die bereits auf ".NET full" abzielt (im Gegensatz zu ".NET Client Profile" - das ist eine Lightweight-Version) - würde ich mich für eine Referenzierung von System.Web entscheiden.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum