///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数据………………