<?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的專欄