设为首页 收藏本站
查看: 824|回复: 0

[经验分享] php采集csdn首页新闻

[复制链接]

尚未签到

发表于 2017-3-27 09:51:20 | 显示全部楼层 |阅读模式
  <?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(!empty ( $match[2][1])){
$list[$j]['content']=$match[2][1];
$list[$j]['title']=$match[1][0];
$j++;
}
}
print_r($list);
}
?>


  很容易看出
  $list就是收集到的新闻,形式是一个二维数组
  如果要把他保存到你的数据库,我就不解释了...
  其中注意判断是否与你数据库的文章重复
  可以通过md5加密标题然后与你数据库的文章标题md5加密后比对,若真.,则表示你数据库有同样的文章
  注意这里希望大家复制不要手工复制,请view
plain
查看源代码方法复制.....

  因为表面的代码跟实际代码貌似有出入
  

  

  如果你是thinkphp的话....那就跟我的一样了...下面贴出更方便的代码直接添加数据库,包括重复数据判断:

<?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(!empty($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;
}
}
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355945-1-1.html 上篇帖子: php读写excel类函数 下篇帖子: PHP session变量的销毁
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表