Wie man ein JavaScript-Objekt mit XPath / HTMLAgilityPack liest

c# html-agility-pack javascript xpath

Frage

Für mein Crawler-Projekt muss ich Produktdetails aus dem JavaScript-Objekt abrufen.

Wie kann ich Objektdetails aus dem folgenden JavaScript erhalten? Ich verwende XPath und HTMLAgilityPack.

<script type="text/javascript">
    var product = {
        identifier: '2051189775',     //PRODUCT ID
        fn: 'Fit- Whiskered Dark Wash Skirt',
        category: ['sale'],
        brand: 'Brand Name',
        price: '22.90',  // this would be the discount price
        amount: '31.80',  // this would be the original price
        currency: 'USD',
        //List can me even more.
    };
</script>

Ich habe noch nie versucht, Details von JavaScript-Objekten zu bekommen. Ich habe Details direkt von HTML für andere Crawler erhalten.

Akzeptierte Antwort

Da das HTML Agility Pack keinen Inhalt des HTML auswertet, sollte der JavaScript-Code nur als reiner Text betrachtet werden. Verwenden Sie die SelectSingleNode Methode, um den Teil von Javascript zu finden, dann greifen Sie einfach auf InnerHtml, um zu den Inhalten zu gelangen.

Suchen Sie entweder einen C # Javascript-Parser (z. B. Iron JS ) oder schreiben Sie einen Parser mit Standard-Textmanipulationstechniken ( String.* Oder Regex , um die Regex Bits zu extrahieren.

Sobald Sie die Bits zwischen den geschweiften Klammern haben, können Sie sie mit einem zuvor erwähnten Parser oder einer Bibliothek wie Json.NET analysieren , da die Teile zwischen den geschweiften Klammern scheinbar gültig sind.



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