最近做了一個seo項目是針對一些優秀的網站,把它們的資源變成我們自己。
要求是:要能即時更新,靜態頁面本地化,本地化的頁面不能出現原有的主題。
即時更新和替換主題利用一般的小偷程式就可以實現,但是本地化就得把頁面下載下來,這樣一來樣式,圖片路徑,即時更新等一系列的問題就要注意了。
css,js,圖片等資源都要下載到本地,這些檔案下載一兩個沒問題,一旦批量下載就要仔細觀察它們的路徑規則,而且一般css裡面會含有背景圖片,這也需要使用本地圖片。所以首先要解決資源本地化,我寫了一個小偷本地化的類,其中有幾個方法可以實現資源本地化,暫時先展示資源本地化的方法,待介紹完了將開源所有的代碼以及使用方法:
/** * 組建檔案夾,但是不組建檔案 * * @param $address */public function get_file_adress($address){//$first = substr($address, 0, 1);$dirs = explode('/',$address);$this->array_remove_empty($dirs);//$address = implode($dirs, '/');//if($first == '/') $address = '/'.$address;$dirs = array_values($dirs);$nums = count($dirs);if($nums > 1){$s=0;while ($s<$nums-1){$dirs[$s] = self::filename_safe($dirs[$s]);if(!file_exists($dirs[$s])){if(self::filename_check($dirs[$s])){if(!file_exists($dirs[$s])) @$mkdir = mkdir($dirs[$s],0777);}}++$s;$dirs[$s]=$dirs[$s-1]."/".$dirs[$s];}}} /** * 組建檔案 * * @param $filename * @param $url */ private function grab_file($filename, $url) { if($url == "") return false; if($filename == "") return false;//echo $filename.'||'.$url.'<hr>'; $filename = ltrim($filename, '/'); if(!file_exists($filename)) { $this->get_content($filename, $url); } /*$session_name = "grab_caches_file"; if($_SESSION[$session_name]) { $grab_caches_time = $_SESSION[$session_name];//echo time().'||'.$grab_caches_time.'<hr>'; if((time() - $grab_caches_time) >= $this->cache_time) { $_SESSION[$session_name] = null; unset($_SESSION[$session_name]); $this->get_content($filename, $url); } } else { $_SESSION[$session_name] = time(); $this->get_content($filename, $url); }*/ } public function get_content($filename, $url) {//echo $filename.'||'.$url.'<hr>'; $content = curl_get_content($url); if($content){ @file_put_contents($filename, $content); return true; }else{ return false; } }
先利用get_file_adress函數組建檔案存放的檔案夾,再用grab_file組建檔案。
執行個體示範:http://news.80jiaju.com/