程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php采集csdn首頁新聞

php采集csdn首頁新聞

編輯:關於PHP編程

 

<?php

 

function csdn(){//$uid采集文章的分類 

    $url="http://www.csdn.net"; 

    $ch = curl_init(); 

    curl_setopt ($ch, CURLOPT_URL,$url); 

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);     

    curl_setopt($ch,CURLOPT_ENCODING ,'utf8');  

    $content = curl_exec($ch); 

    preg_match_all("/http\:\/\/\w*\.csdn\.net\/a\/\d*\/\d*\.html/",$content,$match); 

    $weburl=$match[0]; 

    $weburl=array_unique($weburl); 

    $j=0; 

    foreach($weburl as $i=>$vo){ 

        curl_setopt ($ch, CURLOPT_URL,$vo); 

        $content = curl_exec($ch); 

        preg_match_all("/\<h1\>(.*)\<\/h1\>|\<div\s*class\=\"blkCont.*([\s\S]*)\<div\s*class\=\"page\".*\>/",$content,$match); 

        if(!emptyempty ( $match[2][1])){ 

            $list[$j]['content']=$match[2][1]; 

            $list[$j]['title']=$match[1][0]; 

            $j++; 

        } 

    } 

    print_r($list); 

?> 

 

很容易看出

$list就是收集到的新聞,形式是一個二維數組

如果要把他保存到你的數據庫,我就不解釋了...

其中注意判斷是否與你數據庫的文章重復

可以通過md5加密標題然後與你數據庫的文章標題md5加密後比對,若真.,則表示你數據庫有同樣的文章

注意這裡希望大家復制不要手工復制,請查看源代碼方法復制.....

因為表面的代碼跟實際代碼貌似有出入

 

 

如果你是thinkphp的話..www.2cto.com..那就跟我的一樣了...下面貼出更方便的代碼直接添加數據庫,包括重復數據判斷:

 

<?php 

function csdn($uid){//$uid采集文章的分類 

    $url="http://www.csdn.net"; 

    $ch = curl_init(); 

    curl_setopt ($ch, CURLOPT_URL,$url); 

    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);     

    curl_setopt($ch,CURLOPT_ENCODING ,'utf8');  

    $content = curl_exec($ch); 

    preg_match_all("/http\:\/\/\w*\.csdn\.net\/a\/\d*\/\d*\.html/",$content,$match); 

    $weburl=$match[0]; 

    $weburl=array_unique($weburl); 

    $j=0; 

    foreach($weburl as $i=>$vo){ 

        curl_setopt ($ch, CURLOPT_URL,$vo); 

        $content = curl_exec($ch); 

        preg_match_all("/\<h1\>(.*)\<\/h1\>|\<div\s*class\=\"blkCont.*([\s\S]*)\<div\s*class\=\"page\".*\>/",$content,$match); 

        if(!emptyempty($match[2][1])){ 

            $list[$j]['content']=$match[2][1]; 

            $list[$j]['title']=$match[1][0]; 

            $j++; 

        } 

    } 

    $db=M('news'); 

    $news=$db->where("uid=".$uid)->select(); 

    $flag=true; 

    foreach($list as $i=>$vo){ 

        foreach($news as $j=>$value){ 

            if(md5($value['title'])==md5($vo['title'])){ 

                $flag=false; 

                break; 

            } 

        } 

        if($flag){ 

            $vo['uid']=$uid; 

            $vo['date']=date('Y-j-m H:i:s'); 

            $vo['author']=Session::get("admin"); 

            $vo['iscommand']=1; 

            $rs=$db->add($vo); 

        } 

        $flag=true; 

    } 

?>   

 

摘自 zouhao619的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved