我有几个包含 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