为什么使用 wget 下载同一网页两次会产生两个不同的文件?

为什么使用 wget 下载同一网页两次会产生两个不同的文件?

我正在尝试编写一个脚本,当静态网页发生更改时通知我。为此,我用来wget下载网页,并diff检查它是否已更改。我正在运行 Ubuntu 20.04 LTS 虚拟机。这是示例:

$ wget --quiet https://twiki.di.uniroma1.it/twiki/view/Reti_Avanzate/InternetOfThings2021 -O file1
$ wget --quiet https://twiki.di.uniroma1.it/twiki/view/Reti_Avanzate/InternetOfThings2021 -O file2
$ diff -q file1 file2
Files file1 and file2 differ

如您所见,diff报告两个文件之间的差异。为什么?即使我尝试将它们进行比较,diff -y它们对我来说看起来都是一样的。

更新

寻找差异git diff --color-words -- file1 file2给出了以下结果:

差异

显然,有一个字段添加了时间戳,而在两个文件之一中,<!--GENERATED_HEADERS-->另一个文件中没有时间戳。

关于如何解决它有什么想法吗?

答案1

您可以通过使用 w3m 以及-dump在渲染页面时忽略标签的选项来解决此问题。

$ w3m -dump  https://twiki.di.uniroma1.it/twiki/view/Reti_Avanzate/InternetOfThings2021 > file1
$ w3m -dump  https://twiki.di.uniroma1.it/twiki/view/Reti_Avanzate/InternetOfThings2021 > file2
$ if cmp -s file1 file2; then echo "Files are not different"; fi
  Files are not different                                                              
$

答案2

另一个“答案”不是关于如何解决这个问题,而是关于导致这个问题的原因:(显然)TiddlyWiki 的使用版本似乎生成了其输出具有随机标签顺序在 HTML 元素中。例子:

--- file1
+++ file2
@@ -703,881 +703,881 @@
[...]
-<td valign="top" bgcolor="#ffffff" class="twikiTableCol2" align="left"> r1 </td>
[...]
+<td bgcolor="#ffffff" class="twikiTableCol2" align="left" valign="top"> r1 </td>
[...]

对于表、图像、链接中的属性重复此操作。

相关内容