我們正在遷移網絡服務器,如果能夠自動檢查某些基本網站結構以查看新服務器上的呈現網頁是否與舊服務器相同,那就太好了。我只是想知道有沒有人知道有什麼可以幫助完成這項任務?比較兩個網站,看看它們是否「平等」?
回答
獲得這兩個網站的格式化輸出(這裏我們使用w3m的,但山貓也能正常工作):
w3m -dump http://google.com 2>/dev/null > /tmp/1.html
w3m -dump http://google.de 2>/dev/null > /tmp/2.html
然後用wdiff,它可以給你的是如何相似的百分比這兩個文本是。
wdiff -nis /tmp/1.html /tmp/2.html
使用colordiff也可以更容易地看出差異。
wdiff -nis /tmp/1.html /tmp/2.html | colordiff
摘錄輸出:
Web Images Vidéos Maps [-Actualités-] Livres {+Traduction+} Gmail plus »
[-iGoogle |-]
Paramètres | Connexion
Google [hp1] [hp2]
[hp3] [-Français-] {+Deutschland+}
[ ] Recherche
avancéeOutils
[Recherche Google][J'ai de la chance] linguistiques
/tmp/1.html: 43 words 39 90% common 3 6% deleted 1 2% changed
/tmp/2.html: 49 words 39 79% common 9 18% inserted 1 2% changed
(他居然把google.com到法國...搞笑)
common%值是兩個文本是多麼相似。另外,你可以很容易地通過單詞(而不是可能是混亂的線)看到差異。
將文件複製到同一臺服務器中/tmp/directory1
和/tmp/directory2
並運行以下命令:
diff -r /tmp/directory1 /tmp/directory2
對於所有意圖和目的,你可以把它們放在首選的位置,您的首選命名約定。
編輯1
你可能使用lynx -dump
或wget
和運行結果的差異。
這不是比較文件本身不是嗎?我想通過Apache(和PHP)運行後比較呈現的頁面。我想我正在尋找某種網絡蜘蛛或爬蟲。 – 2010-07-19 21:37:46
捕獲是如何檢查'呈現'頁面。如果頁面沒有任何動態內容,最簡單的方法是使用md5或sha1命令爲文件生成散列,然後針對新服務器進行檢查。
這些網頁具有動態內容,你將不得不使用下載工具wget之類的網站
wget的--mirror http://thewebsite/thepages
,然後使用diff由華納的建議或做再次哈希的東西。我認爲差異可能是最好的方式,因爲即使改變1個字符也會混淆哈希。
我在看到你的答案之前正在編輯。你提供了一個很好的建議。 – Warner 2010-07-19 21:44:29
缺乏渲染每個頁面,採取屏幕截圖和比較這些屏幕截圖,我不認爲有可能比較呈現的頁面。
但是,在用wget遞歸下載後,下載的網站當然是可以比較的。
wget [option]... [URL]...
-m
--mirror
Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP
directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
下一步將是做華納推薦的遞歸差異。
- 1. 比較兩棵樹,看看它們是否相同
- 2. Objective C比較兩個CGPoint以查看它們是否接近?
- 3. 比較兩個ObservableCollection(s)以查看它們是否不同
- 4. 比較兩個文件,看它們在PHP中是否相同
- 5. 比較文件和列表,看看它們是否相同
- 6. 比較在vb.net兩個日期它們是否相等或不
- 7. 比較excel中的兩個表,看看列是否匹配
- 8. 比較兩個字符串以查看它們是否爲旋轉
- 9. 比較兩個java.util.Dates,看看他們都在同一天
- 10. 如何比較兩個未知數字以查看它們在特例模板中是否相等?
- 11. VBA比較2個XML節點,看看他們是否是同一節點
- 12. 什麼是正確的方式來比較兩個文件名,看看他們是否是同一個文件?
- 13. 蟒蛇 - 比較兩個列表,看看是否發生在另一個連續
- 14. 比較7個單詞到eachother,看看他們中的5個是否相等。怎麼樣?
- 15. 比較一個WordPress循環內的ACF字段,看它們是否相同
- 16. 我有兩個UIViewControllers,我需要比較,看看他們是否是UIViewController的相同的子類
- 17. 比較兩個花車,看它們是否都是負值,或者都是正值
- 18. 比較平等兩個視圖
- 19. C++如何比較2個整數,看看它們是否相等?一個是用戶輸入,另一個是結構的一部分?
- 20. 如何比較輸入[0]和輸入[1]以查看它們是否相似?
- 21. 如何比較兩個數組,並查看它們是否有任何共同點(PHP)
- 22. 比較兩個csv併合並它們
- 23. 如何比較兩個字符串,如果它們不相等
- 24. 比較兩次公差是否相等?
- 25. 比較兩組是否相等遞歸?
- 26. 價格比較網站 - 它們是如何工作的?
- 27. 比較日期,看看密碼是否過期(1年)JAVA
- 28. 有沒有辦法比較2版本的「編譯」的ASP.NET應用程序,看看它們是否一樣?
- 29. 如何看待平等比較中的空值?
- 30. 如何比較容器和初始化程序列表以查看它們是否相等?
如果你只想要百分比,你可以執行以下命令:'wdiff -nis /tmp/1.html /tmp/2.html |尾-2 | awk'{print $ 5}'' – droope 2011-04-08 15:01:08