我正在编写一个 shell 脚本,用于跟踪网站的更改,并在发生更改时通过电子邮件将更改内容发送给我。这个想法是使用 wget 获取 html 的副本并将其与上次脚本运行时的版本进行比较。 Wget 可以很好地保存 html 文件,但我在比较这些文件时遇到了问题。问题是我只对 html 文件的纯文本的变化感兴趣,而不是代码、链接等。
Diff 用于查找两个文件中的所有更改,但即使纯文本相同,它也总是返回更改。这是因为网站上的每个链接都有一个相应的真实性 token ,每次访问页面时该 token 都不同。为了仅区分包含纯文本的行,我试图对其进行过滤以排除以“<”或“(any_amount_of_spaces)<”开头的任何行。我查看了 diff 手册页,但我似乎找不到可以满足我需要的运算符(operator)。我对 REGEX 了解不多,但它可以与 diff -I 一起使用吗?
谢谢!
最佳答案
你可以使用 lynx -dump
呈现页面并将其提供给 diff
, 但由于您对链接不感兴趣,您需要删除 References
这产生的部分(例如 awk
)使它成为一个不太健壮的解决方案(但对于您的用例来说可能足够好)。
如果您不介意使用第 3 方的东西,请使用 html2text :
diff <(html2text before.html) <(html2text after.html)
PS:有两个不同的程序叫做 html2text
.
关于html - 仅 html 文件的 Bash diff 正文文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753506/