Come leggere l'oggetto JavaScript con XPath / HTMLAgilityPack

c# html-agility-pack javascript xpath

Domanda

Per il mio progetto di crawler, ho bisogno di ottenere i dettagli del prodotto dall'oggetto JavaScript.

Come posso ottenere in modo efficace i dettagli degli oggetti dal seguente JavaScript? Utilizzo XPath e 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>

Non ho ancora provato a ottenere dettagli dagli oggetti JavaScript. Stavo ottenendo i dettagli direttamente dall'HTML per altri crawler.

Risposta accettata

Poiché HTML Agility Pack non valuta nessuno dei contenuti dell'HTML, il codice javascript dovrebbe essere considerato come testo semplice. Usa il metodo SelectSingleNode per trovare il pezzo di Javascript, quindi prendi l'InnerHtml per accedere ai contenuti.

O trovare un parser javascript C # ( Iron JS per esempio) o scrivere un parser usando tecniche standard di manipolazione del testo ( String.* O Regex per estrarre i bit che stai cercando.

Una volta ottenuti i bit tra parentesi graffe, è possibile analizzarli utilizzando un parser o una libreria come Json.NET , poiché i pezzi tra parentesi graffe sembrano essere validi json.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché