Sto cercando di trovare un metodo per accedere ai dati tra i tag restituiti da un server a cui sto facendo richieste HTTP. Il documento ha più tag, ma solo uno dei tag ha un codice JavaScript tra di essi, il resto è incluso nei file. Voglio accedere al codice tra il tag dello script.Analisi dell'HTML per ottenere il valore della variabile di script
Un esempio del codice è:
<html>
// Some HTML
<script>
var spect = [['temper', 'init', []],
['fw\/lib', 'init', [{staticRoot: '//site.com/js/'}]],
["cap","dm",[{"tackmod":"profile","xMod":"timed"}]]];
</script>
// More HTML
</html>
Sto cercando un modo ideale per catturare i dati tra 'SPECT' e analizzarlo. A volte c'è uno spazio tra "spect" e "=" ea volte non c'è. Non ho idea del perché, ma non ho alcun controllo sul server.
So che questa domanda potrebbe essere stata fatta, ma le risposte suggeriscono di utilizzare qualcosa come HTMLAgilityPack, e preferisco evitare di utilizzare una libreria per questa attività in quanto ho solo bisogno di ottenere il codice JavaScript dal DOM una volta.
è esattamente il motivo per cui lo si utilizza, con 2 o 3 righe di codice è possibile estrarre il contenuto dello script con HTMLAgilityPack e quindi analizzarlo con una regex o anche con un programma di valutazione JavaScript per ottenere il valore dello spett che semplificerebbe l'intero lavoro di analizzarlo con una regex. – Prix
Siamo spiacenti, ma se non riesci a scrivere il codice da solo in 5 minuti, potrebbe essere un'indicazione che il problema è più complesso di quanto pensassi inizialmente - ecco perché esistono soluzioni esistenti :). È piuttosto difficile vedere quale sia il tuo obiettivo in realtà: vuoi imparare qualcosa di nuovo, hai delle restrizioni esplicite a non usare librerie esterne, vuoi esercitarti a scrivere un particolare tipo di codice? –
L'ho risolto scrivendo un'espressione regolare, risponderò alla tua domanda in un attimo. La ragione per cui volevo evitare di usare una libreria perché questo è l'unico punto nell'applicazione che avrò bisogno di analizzare questo bit di JavaScript. Ho pensato che fosse una cattiva pratica usare una libreria per questo compito quando teoricamente è possibile senza uno. Il motivo per cui ho chiesto è di scoprire quali altre opzioni potrebbero essere disponibili per risolvere questo problema. Affronto questo problema numerose volte in altri progetti e di solito finisco per usare CsQuery o HTMLAgilityPack, ma per questa chiamata volevo evitare le librerie. –