Comment lire un objet JavaScript avec XPath / HTMLAgilityPack

c# html-agility-pack javascript xpath

Question

Pour mon projet de robot d'exploration, je dois obtenir les détails du produit à partir d'un objet JavaScript.

Comment puis-je obtenir efficacement les détails des objets à partir du code JavaScript suivant? J'utilise XPath et 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>

Je n'ai jamais essayé d'obtenir des détails à partir d'objets JavaScript. J'obtenais des détails directement à partir de HTML pour d'autres robots.

Réponse acceptée

Puisque le pack d'agilité HTML n'évalue aucun des contenus du code HTML, le code javascript doit simplement être considéré comme du texte brut. Utilisez la méthode SelectSingleNode pour rechercher le morceau de Javascript, puis saisissez simplement InnerHtml pour accéder au contenu.

Trouvez un analyseur javascript C # ( Iron JS par exemple) ou écrivez un analyseur utilisant les techniques de manipulation de texte standard ( String.* Ou Regex pour extraire les bits que vous recherchez.

Une fois que vous avez les bits entre les accolades, vous pouvez les analyser en utilisant un analyseur mentionné précédemment ou une bibliothèque comme Json.NET , car les éléments entre les accolades semblent être valides.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi