您现在的位置: 爱迪森网络客服中心 >> 常见问题 >> 编程常见问题 >> PHP技术 >> 文章正文
PHP抓取新闻
作者:爱迪森网络    文章来源: 本站原创    更新时间:2009-9-14 18:09:15    点击数:
//检查是否实视频,是视频则不抓取
if(strpos($title[1],"视频",0)!==false){//以前写的是!=
echo "不抓取视频!";
return false;
}
!==和!=,===和==他们的区别主要就是在判断值是否相等的同时,还要判断两者的类型。
http://www.stuhome.net/readnews/   这就是抓新闻板块。


<?php
require_once(dirname(__FILE__)."/../global.php");
//抓取网页内容
set_time_limit(0);

$line = file_get_contents("http://rss.sina.com.cn/sports/basketball/nba.xml");
$line = strstr( $line, "<item>");

$line=explode("</item>",$line);

$count=count($line);
for($i=0;$i<$count;$i++){
    eregi ("<pubDate>(.*)</pubDate>",$line[$i],$time);
    //取得链结
    if (eregi ("<link>(.*)</link>",$line[$i],$out)) {
        $news = file_get_contents("$out[1]");
        if(eregi ("<h1>(.*)</h1>",$news,$title)){        //匹配标题
            preg_replace("/ /","",$title[1]);        //去除标题中的空格
            $title[1] = trim($title[1]);
            $title[1]=strip_tags($title[1]);                    //去除标题中的的HTML标记
            //$title[1] = addslashes($title[1]);

            //检查是否实视频,是视频则不抓取
            if(strpos($title[1],"视频",0)!==flase){
                echo "不抓取视频!";
                //exit;
                return false;
            }
            echo $title[1];
            echo "<br>";
        }else{
            $title[1]="";
        }
       
        $dt=getdate();
        $hours=$dt[hours];
        $publish_time=$dt[year]."-".$dt[mon]."-".$dt[mday]."-".$hours."-".$dt[minutes]."-".$dt[seconds];
        if($title[1]!=""){
            $sql_title="select title from news where title='$title[1]'";
            $result=$DB->fetch_one_array($sql_title);
            if(empty($result)){

                //取出正文部分
                $news = strstr($news,"<!--正文内容开始-->");
                $news = explode("<!--正文内容结束-->", $news);



                //匹配正文内容
                if(eregi ("<p>(.*)</p>",$news[0],$content)){
                    echo $content[1];
                    echo "<br>";
                }else{
                    $content[1]="";
                }


                //匹配图片路径
                $picture_name="";
                $img="";
                $news=explode("border",$news[0]);
                for($j=0;$j<count($news);$j++){
                    if(preg_match("/http:\/\/i(.*)\.(jpeg|png|jpg)/i",$news[$j],$picture)){
                        $img[$j]=GrabImage($picture[0],"");
                           
                        if($img[$j]){
                            $imgpath[$j]=dirname(__FILE__)."/pictures/".$img[$j];
                            echo '<pre><img src='.$imgpath[$j].'></pre>';
                        }else{
                            $img[$j]="";
                        }
                    }else{
                        $picture[0]="";
                        $img[$j]="";
                    }
                    $picture_name.=$img[$j];
                }

             
        }
    }
}

?>


<?php
// Function: 获取远程图片并把它保存到本地
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期自动生成.
function GrabImage($url,$filename="") {
    if($url==""){
        return false;
    }
    if($filename=="") {
        $ext=strrchr($url,".");
        $temext = strrchr(strtolower($url),".");
        if($temext!=".jpg"&$temext!=".jpeg"){
            return false;
        }
        $filename=date("dMYHis").$ext;
        $filepath=dirname(__FILE__)."/pictures/".$filename;
    }

    ob_start();
    readfile($url);
    $img = ob_get_contents();
    ob_end_clean();
    $size = strlen($img);

    $fp2=fopen($filepath, "a");
    fwrite($fp2,$img);
    fclose($fp2);

    return $filename;
}
?>
本文地址:
 返回上一页   
·上一篇: PHP新闻内容分页类
·下一篇: 没有了
  主题搜索 全文搜索          有问必答

热点问题
客服导航
如果您在使用我们的产品中遇到问题,建议您首先在“常见问题”中查询解决方法;  
如果没有找到该问题的解决方法和答案,您可以在“问题搜索”中进行搜索;  
如果搜索后没有找到满意答案,您可以登陆会员在“有问必答”,我们会在1个工作日内给您答复。  
有问必答
 
Copyright © 2003-2009 爱迪森网络 版权所有
本站所有虚拟主机域名与各类服务,适用于在线注册购买,立即开通。 冀ICP备08011707号