為什麼使用 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>
[...]

對於表格、圖像、連結中的屬性重複此操作。

相關內容