經常由于某些原因我們需要爬取某一個網站或者直接復制某一個站點,到網上找了很多工具進行測試,試了很多各有各的問題,最終選擇了Teleport Ultra,用起來效果很好;具體的操作手冊等東西就不在這里說了,網上搜索一下有很多,這里主要說遇到的問題:
軟件下載地址:http://download.csdn.net/detail/ityouknow/9506423
工具截圖:
測試抓取的網站為簡單心理:www.jiandanxinli.com
抓取后的效果圖
一般我會選擇復制100級基本上也就把網站的東西全部copy下來了,但是因為Teleport Ultra 是以UTF-8的編碼進行的抓取如果文件中有中文字符,或者gbk編碼的文件就會出現亂碼如下圖:
當然手動在瀏覽器選擇UTF-8也可以,但是咱不能每次打開都這樣干吧。于是到網站找到一款軟件叫:TelePort亂碼修復工具(siteRepair-v2.0),經過測試可以解決亂碼的問題,這款工具也會清除一些無效的鏈接和html符號等。
軟件下載地址:http://download.csdn.net/detail/ityouknow/9506429
軟件截圖:
絕大數網站再經過這兩個步驟應該都已經OK了,但是有的網站的層級結構中用到了中文目錄或者中文的文件名就會出現亂碼,類似下面的URL地址:
http://www.xxxx.com/.com/question/除了加鎖,還有什么方法解決資源競爭的問題?/解決方案.html
這樣網站的結構抓取下來就會出現兩種亂碼:1)文件夾名亂碼 2)文件名亂碼
遇到這個問題siteRepair-v2.0工具就會報錯,我估計是不能識別亂碼的文件夾或者文件吧。
后來在網上找了一個PHP的程序,進行了簡單的修改測試可以解決這個問題
PHP代碼:convert.php
<?php function listDir($dir) { if(is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if((is_dir($dir."/".$file)) && $file!="." && $file!="..") { rename($dir."/".$file,$dir."/".mb_convert_encoding($file,"GBK", "UTF-8")); listDir($dir."/".$file."/"); } else { if($file!="." && $file!="..") { $name=rename($dir."/".$file,$dir."/".str_replace('\\','',mb_convert_encoding($file,"GBK", "UTF-8"))); echo '路徑:'.$dir."/".$file.'<br />'; echo '結果: '.str_replace('\\','',mb_convert_encoding($file,"GBK", "UTF-8")).'<br />'; } } } closedir($dh); } } } ?> <?php //開始運行 listDir("./convert"); ?>
在代碼的同級目錄下,新建 convert文件夾,把亂碼的文件放入這個目錄,然后執行convert.php即可。
![]() |
不含病毒。www.avast.com |