php+linux的crontab实现定时抓取csdn文章到mysql数据库

///2016/05/27///

///by xbw/

///centos php apache/


最近在想无数据不成方圆,没有数据一切都是空壳,抓点数据来吧,虽然还不知道爬虫怎么实现的,自己鼓捣了一个用正则表达式匹配网页数据的php代码,分享给大家,也请大牛fork一下,


首先用mysql建了一个数据库,用来存储抓到的数据,库名csdn,表明info

自增id字段,csdn文章url,文章题目,文章摘要,抓取日期;


主php代码;

<?PHP
require("db_config.php");
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password) or die("error connecting") ;
mysql_query("set names 'utf8'"); 
mysql_select_db($mysql_database);
$ii=0;
		$ret = file_get_contents('http://blog.csdn.net/?&page=1');
		$isMatched = preg_match_all('/" href="(?<grp0>[^"]+)" tar[^<]+t="_blank">(?<grp1>[^<]+)<\/a>[\s]+<\/h1>[\S\s]+?<\/dt>[^<]*<dd>(?<grp2>[^<]+)<\/dd>[^<]*<\/dl>/', $ret, $matches);
		for($i=0;$i<$isMatched;$i++){
			$xu=array();
			for($j=1;$j<=3;$j++){
				$xu[$j]=$matches[$j][$i];
			}
			$rowz=mysql_fetch_row(mysql_query("SELECT count(id) FROM info WHERE url='$xu[1]'"));
			echo $rowz[0]."--------------";
			if($rowz[0]==0){
				$result = "INSERT INTO info(title,content,url,time) VALUES('$xu[2]','$xu[3]','$xu[1]',NOW())";
				mysql_query($result);
				echo '该数据抓取成功'."<BR>";
				$ii++;
			}else{
				echo '该数据已存在'."<BR>";
			}
		}
	echo "抓取".$ii."条数据"."<BR>";
?>

这片代码只抓取了csdn博客首页,一开始是抓取全部45页数据,但是发现csdn更新很慢,索性只抓首页,增加抓取频率吧,五分钟抓一次,定是抓取用linux的crontab,

新建任务

crontab -e
然后编辑任务
*/5 * * * * /usr/bin/curl http://ecfun.cc/spider/******.php
esc 

:wq

这样就好了,他会每五分钟抓一次,不过数据量不是很大,我再去看看爬虫吧,毕竟自己想的东西不是什么正规的东西。
我先写一下数据分页显示,方便你们利用csdn数据………………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值