Ich versuche eine Methode für den Zugriff auf Daten zwischen Tags zu finden, die von einem Server zurückgegeben werden, an den ich HTTP-Anfragen stelle. Das Dokument hat mehrere Tags, aber nur eines der Tags hat JavaScript-Code dazwischen, der Rest ist in Dateien enthalten. Ich möchte auf den Code zwischen dem Skript-Tag zugreifen.HTML analysieren, um den Variablenwert des Skripts zu erhalten
Ein Beispiel für den Code ist:
<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>
ich für eine ideale Art und Weise bin auf der Suche, die Daten zwischen ‚spect‘ zu packen und sie zu analysieren. Manchmal gibt es einen Zwischenraum zwischen 'spect' und '=' und manchmal nicht. Keine Ahnung warum, aber ich habe keine Kontrolle über den Server.
Ich weiß, dass diese Frage vielleicht gestellt wurde, aber die Antworten schlagen vor, etwas wie HTMLAgilityPack zu verwenden, und ich würde eher vermeiden, eine Bibliothek für diese Aufgabe zu verwenden, da ich nur das JavaScript vom DOM einmal erhalten muss.
das ist genau, warum Sie es verwenden, mit 2 oder 3 Zeilen Code können Sie den Skript-Inhalt mit HTMLAgilityPack extrahieren und dann einfach mit einem Regex oder sogar einem JavaScript-Evaluator analysieren, um den Wert von spect zu erhalten, der die gesamte Arbeit vereinfachen würde Parsing es mit einer Regex. – Prix
Entschuldigung, aber wenn Sie nicht selbst Code in 5 Minuten schreiben können, kann es ein Hinweis darauf sein, dass das Problem komplexer ist, als Sie ursprünglich dachten - deshalb existieren bestehende Lösungen :). Es ist etwas schwierig zu sehen, was Ihr Ziel eigentlich ist - wollen Sie etwas Neues lernen, haben Sie explizite Einschränkungen, keine externen Bibliotheken zu verwenden, möchten Sie üben, bestimmte Art von Code zu schreiben? –
Ich löste es, indem ich einen regulären Ausdruck schrieb, wird in einem Moment eigene Frage beantworten. Der Grund, warum ich die Verwendung einer Bibliothek vermeiden wollte, weil dies der einzige Punkt in der Anwendung ist, muss ich dieses bisschen JavaScript analysieren. Ich hielt es für eine schlechte Übung, eine Bibliothek für diese eine Aufgabe zu verwenden, wenn es theoretisch ohne eine möglich ist. Der Grund, warum ich gefragt habe, ist herauszufinden, welche anderen Möglichkeiten zur Lösung dieses Problems zur Verfügung stehen. In anderen Projekten stehe ich häufig vor diesem Problem und benutze normalerweise CsQuery oder HTMLAgilityPack, aber für diesen einen Aufruf wollte ich diese Bibliotheken vermeiden. –