次のJavaScript関数を含む複数のHTMLファイルがあります。
<script type='text/javascript'>eval(function(...............
..............................
781a802d711afb9fe305d5b2e6|nlgphp5ee35huxvkc5xui4xl|gr6weglhvfovda4zodalt7j7glkt5ua|hojehp5ee35huxvkc5xui4xlugr6weglh|vfovl443odalt7klrfbtu4q|mystring123|data|new'.split('|')))
</script>
.......................
<div class="description">mytitle123</div>
|と|data|newの間の部分(この場合は「mystring123」)とタイトル「mytitle123」を抽出したいと思います。最初の文字列は常にevalにあり、| data |で終わります。区切り文字の前の英数字文字列が変更されます。
答え1
XML / HTML文書は適切なパーサーツールを使用して処理する必要があります。
xmllint
方法(sed
すべてのラベル本文テキストで検索/置換をサポート<script>
):
$ xmllint --html --xpath '//script/text()' input.html | sed -En 's/.*\|([^|]+)\|data\|new.*/\1/p'
mystring123
$ xmllint --html --xpath '//div[@class="description"]/text()' input.html
mytitle123