Espero que les sirva!
Mas explicaciones en mi blog;
http://eugeniofage.wordpress.com/2008/08/28/clase-spider-para-obtener-metas-y-contenido-sin-html-tags-de-una-web/
Código PHP:
   //@author Eugenio Fage
abstract class Spider {
    public function getWebFull($url){
        $htmlCode=self::getWebCode($url);
        if($htmlCode=='') return array();
        $return['title']=self::getTitle($htmlCode);
        $return['metas']=self::getMetas($htmlCode);
        $return['text']=self::justText($htmlCode);
        return $return;
    }
    public function getWebCode($url){
        //@todo si no existen las curl functions usar fsockopen
        $ch = curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        $data = curl_exec ($ch);
        curl_close ($ch);
        return $data;
    }
    public function getTitle($html,$charset=null){
        //@todo corregir acentos sin usar multi byte functions
        $arr=array();
        preg_match_all('@(<title>(.*)</title>)@i',$html,$arr);
        $arr=$arr[2];
        //el titulo no va a ser mas largoque 100 caracteres
        return(substr(strip_tags($arr[0]),0,110));
    }
    public function getMetas($html,$charset=null){
        //@todo corregir acentos sin usar multi byte functions
        $arr=array();
        preg_match_all('@(meta\sname=\"(.*)\"\scontent=\"(.*)\"[ /]*>)@i',$html,$arr);
        $meta=$arr[2];
        $content=$arr[3];
        unset($arr);
        while(($unMeta=array_pop($meta))){
            $metas[strtolower($unMeta)]=array_pop($content);
        }
        while(($unMeta=array_pop($meta))){
            $metas[strtolower($unMeta)]=array_pop($content);
        }
        preg_match_all('@(meta\scontent=\"(.*)\"\sname=\"(.*)\"[ /]*>)@i',$html,$arr);
        $meta=$arr[3];
        $content=$arr[2];
        unset($arr);
        while(($unMeta=array_pop($meta))){
            $metas[strtolower($unMeta)]=array_pop($content);
        }
        return $metas;
    }
    public function justText($html,$charset=null){
        //@todo corregir acentos sin usar multi byte functions
        $html=str_replace('>','> ', $html);
        $buscar=array('@<!--.*?-->@si','@<script[^>]*?>.*?</script>@si','@<style[^>]*?>.*?</style>@si');
        $html = preg_replace($buscar, ' ', $html);
        $html = preg_replace('@<.*?>@si', ' ', $html);
        $html=str_replace('<',' ',$html);
        $html=str_replace('>',' ',$html);
        $html=html_entity_decode(strip_tags($html));
        $html=str_replace(array('<','>','>','<',"\t",chr(13),chr(10),chr(160)),' ',$html);
        while(strpos($html,'  ')!==false){
            $html=str_replace('  ',' ',$html);
        }
        return substr($html,0,1500);
    }
} 
     
 



