我正在嘗試編寫一個腳本,當靜態網頁發生更改時通知我。為此,我用來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>
[...]
對於表格、圖像、連結中的屬性重複此操作。