Ich habe die Quelle einer Seite und muss alle Tags aus dieser Datei abrufen. Die Reihenfolge ist wichtig. Ich brauche sowohl externe als auch Inline-Skripte. Das Tag muss in der Ausgabe enthalten sein. Ich suche nach einem Linux-Konsolentool.
Ich habe gesucht, aber nichts gefunden. Ich habe diese Informationen mit jQuery abgerufen und in eine Datei eingefügt. Diese Ausgabe hat jedoch eine seltsame Kodierung, sodass ich sie auf herkömmliche Weise analysieren muss.
Beispiel: Eingabe:
<html>
<head>
<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
</head>
<body>
<div id="main">...</div>
<script src="footer.js">
</body>
</html>
Ausgabe:
<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">
Zweites Beispiel, gibt nur Quellattribute aus.
script1.js
script2.js
inline script
footer.js
Antwort1
grep
Sie können dafür und seinen einzigen passenden Parameter ( ) verwenden -o
, zB:
$ grep -o "<[^>]*>" <(curl -s http://example.com/)
Dadurch werden alle HTML-Tags einschließlich der Reihenfolge gedruckt.
<script>
Um nur Tags einzuschließen , versuchen Sie (ändern Sie es index.html
mit Ihrer Datei):
$ grep -Eo "<script.*(</script>|>)" index.html
Um nur die Dateinamen (aus src
dem Attribut) zu erhalten, können Sie durch Hinzufügen eines weiteren erweitern grep
, z. B.:
$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'
Die obige Syntax hilft Ihnen bei vielen verschiedenen Variationen von HTML-Code nicht weiter. Für komplexere LösungenVerwenden von regulären Ausdrücken zum Parsen von HTMLwird im Allgemeinen nicht empfohlen, daher sollten Sie geeignete Tools verwenden (Sprache Ihrer Wahl oder schauen Sie sich diese anShell-Werkzeuge).
Antwort2
Ich weiß, dass Sie bereits eine Antwort akzeptiert haben, aber ich möchte auch hinzufügen, dass Sie sich Folgendes ansehen können:xpath.
Es ist speziell für Daten im XML-Stil gedacht.
In Ihrem Fall wäre der XPath hierfür
//script
Hierist auch ein weiteres Beispiel für jemanden, der XPath zum Parsen von HTML verwendet