HTMLファイルから選択したタグを取得する

HTMLファイルから選択したタグを取得する

ページのソースがあり、このファイルからすべてのタグを取得する必要があります。順序は重要です。外部スクリプトとインライン スクリプトの両方が必要です。タグは出力に含まれている必要があります。コンソール Linux ツールを探しています。

検索してみましたが、何も見つからなかったので、jQuery を使用してこの情報を取得し、ファイルに貼り付けました。ただし、この出力には奇妙なエンコードが含まれているため、従来の方法で解析する必要があります。

例: 入力:

<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>

出力:

<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">

2 番目の例では、src 属性のみを出力します。

script1.js
script2.js
inline script 
footer.js

答え1

grepとそれにのみ一致するパラメータ ( )を使用できます-o。例:

$ grep -o "<[^>]*>" <(curl -s http://example.com/)

これにより、注文を含むすべての HTML タグが印刷されます。

タグのみを含めるには<script>、次を試してください (index.htmlファイルに合わせて変更してください):

$ grep -Eo "<script.*(</script>|>)" index.html

ファイル名だけを取得するには (src属性から)、別の を追加して拡張できますgrep。例:

$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'

上記の構文は、HTMLコードのさまざまなバリエーションには役立ちません。そのため、より複雑なソリューションについては、正規表現を使用してHTMLを解析する一般的には推奨されていないため、適切なツール(好みの言語またはこれらをチェックしてください)を使用する必要があります。シェルツール)。

答え2

すでに回答をいただいていると思いますが、xpath

これは特に XML スタイルのデータを対象としています。

あなたの場合、このXPathは次のようになります

//script

こここれは、XPathを使用してHTMLを解析する別の例でもある。

関連情報