PHP 网页爬虫

 

只能爬一个页面

 

<?php 
function get_urls($url){  

       $url_array=array();  

       $the_first_content=file_get_contents($url);  

       $the_second_content=file_get_contents($url);  

       $pattern1 = "/http:\/\/[a-zA-Z0-9\.\?\/\-\=\&\:\+\-\_\'\"]+/";  

       $pattern2="/http:\/\/[a-zA-Z0-9\.]+/";  

       preg_match_all($pattern2, $the_second_content, $matches2);  

       preg_match_all($pattern1, $the_first_content, $matches1);  

       $new_array1=array_unique($matches1[0]);  

       $new_array2=array_unique($matches2[0]);  

       $final_array=array_merge($new_array1,$new_array2);  

       $final_array=array_unique($final_array);  

       for($i=0;$i<count($final_array);$i++)  

       {  

          echo $final_array[$i]."<br/>";  

       }  

   }  

    get_urls("http://www.yinghy.com");

?>

 

 

<?php 

$string = GetHtmlCode("http://www.yinghy.com");
echo $string;

function GetHtmlCode($url){  
    $ch = curl_init();//初始化一个cur对象  
    curl_setopt ($ch, CURLOPT_URL, $url);//设置需要抓取的网页  
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);//设置crul参数,要求结果保存到字符串中还是输出到屏幕上  
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,1000);//设置链接延迟  
    $HtmlCode = curl_exec($ch);//运行curl,请求网页  
    return $HtmlCode;  
} 
function GetAllLink($string) {   
      $string = str_replace("\r","",$string);   
      $string = str_replace("\n","",$string);   
      $regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)";    
          $regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";     
  
          
      //去掉网页中的[]  
      $string = eregi_replace("\[|\]","",$string);  
  
          //去掉JAVASCRIPT代码   
          $string = eregi_replace("<!--.*//-->","", $string);   
             
          //去掉非<a>的HTML标签     
      $string = eregi_replace("</?[^aA][^<>]*>","",$string);  
          //分割$string中的所有链接         
      $output = split('</a>', $string);  
      for($i=0; $i<count($output); $i++){  
         $output_1 = split("<a", $output[$i]);  
      }  
      return $output_1;   
}   
function GetUserCareNews ($test,$keywords,$url) {  
    $messTxt = "";  
    $k=0;  
    $key = explode(";",$keywords);  
  
    //自动为网站加载上http,避免网易邮箱链接错误,有一定的局限性  
    if(!ereg("http",$url)){  
        $url = "http://".$url;  
    }  
  
    for($i=0; $i<count($test); $i++){  
        $test[$i] = eval('return'.iconv('gbk','utf-8',var_export($test[$i],true)).';');//修改编码  
        if(ereg("href", $test[$i])  && !ereg("href='#'",$test[$i])){//去掉无效链接  
            for($j=0; $j<count($key); $j++){                    //支持多关键字  
                if(strpos($test[$i],$key[$j])!==false){  
                    $mess[$k++]=ereg_replace($key[$j],"<font color=red>".$key[$j]."</font>", $test[$i]);//高亮关键字  
            }  
            }  
        }  
    }  
    $mess = array_unique($mess);        //数组去重  
      
    //处理好发送链接,为链接加上网站根目录  
    for($l=0; $l<count($mess); $l++){  
        if(!ereg("http",$mess[$l]) && (strlen($mess[$l]) != 0)){//去掉空数组,这步很重要,如果不去掉直接影响后面链接的质量  
                $mess[$l] = eregi_replace("href=[\"']","",$mess[$l]);  
                $mess[$l] = $url.$mess[$l];  
                $mess[$l] = eregi_replace(" /","/",$mess[$l]);  
                if(ereg("'",$mess[$l])){  
                    $mess[$l]="<a href='".$mess[$l]."</a>";  
                }  
                if(ereg("\"",$mess[$l])){  
                    $mess[$l] = "<a href=\"".$mess[$l]."</a>";  
                }  
        }  
        else{  
            $mess[$l] = "<a ".$mess[$l]."</a>";  
        }  
        $messTxt .= $mess[$l];  
        $messTxt .= "<BR>";  
    }  
    return $messTxt;  
}  

function SendEmail($to, $content) {  
    //Author:luofei  
    //$to 表示收件人地址,$content表示邮件正文内容  
      
    error_reporting(E_STRICT);                      //错误报告  
    date_default_timezone_set("Asia/Shanghai");     //设定时区  
  
    require_once("class.phpmailer.php");  
    require_once("class.smtp.php");  
  
    $mail = new PHPMailer();                        //新建一个对象  
    $mail->CharSet = "UTF-8";                        //设置编码,中文不会出现乱码的情况  
    $mail->IsSMTP();                             //设定使用SMTP服务  
    $mail->SMTPDebug = 1;                            //启用SMTP调试功能i  
                                                    //1 = errors and messages  
                                                    //2 = messages only  
  
    $mail->SMTPSecure = "tls";                       //安全协议  
    $mail->Host = "smtp.googlemail.com";         //SMTP服务器          
    $mail->SMTPAuth = true;                          //启用SMTP验证功能      
    $mail->Username = "username@gmail.com";                 //SMTP服务器用户名        
    $mail->Password = "******";                  //SMTP服务器用户密码  
          
    $mail->From = "username@gmail.com";                    //发件人                              
    $mail->FromName = "Spider Service";                      //发件人姓名(邮件上显示)  
          
    $mail->AddAddress($to);                          //收件人地址  
    $mail->WordWrap   = 50;                          //设置邮件正文每行的字符数  
    $mail->IsHTML(true);                         //设置邮件正文内容是否为html类型  
          
    $mail->Subject = "来自spider.html的邮件";     //邮件主题  
    $mail->Body = "<p>您好!<BR> <p>这是您感兴趣的内容</p> <BR>".$content." ";  
                                                    //邮件正文  
    if(!$mail->Send())                               //邮件发送报告  
    {  
       echo "发送邮件错误!";  
    }   
    else  
    {  
       echo "邮件发送成功!";  
    }  
}  

?>

  

posted on 2015-05-22 17:36  手撕高达的村长  阅读(414)  评论(0编辑  收藏  举报

导航