收集一些php采集程序需要的函数
这篇文章算是我的一个学习备忘,将会收集一些在php采集过程中需要的函数。我希望能够制作一个wordpress的真正的采集插件,而不是类似于WP-o-Matic,Jay Smart RSS等采集别人的rss的插件,毕竟使用全文输出feed的博客越来越少,就是有也插入了很多feed广告和相关文章,不利于采集。其实用python做一个采集程序会更容易,但毕竟php用的更广些。
0.一些值得学习的开源php采集器。
HMJ采集器 (php+mysql)
BeeCollector (小蜜蜂采集器) – (PHP+ZEND+MYSQL)
蝈蝈php采集程序(PHP+MYSQL)
易采(Neat Collector) (PHP+MYSQL)
BFC数据采集器
1.获取一个网页的源代码。
这一步很简单,可以使用2个函数。
file_get_contents或fopen。经过我查资料,尽量使用file_get_contents,因为类似于file,fopen,fgets等系列的方法,有些低效,尽量少进行php的文件操作。
代码:
@$nl=file_get_contents($rs['url']);//抓取远程内容
2.分析源代码,进而获得自己想要的内容,一般采用正则匹配。
代码:
preg_match_all("/var url = \"gameswf\/(.*?)\.swf\";/is",$nl,$connect);//进行正规匹配取得自己要的内容,这一步可能会多次重复。
3.将得到的内容入库。
mysql_query("insert ……插入数据库部分");
这一步的问题是,采集时最好先把一部分数据存入数据库,然后进行下一步操作。入库时要进行内容判断,检查是否为合法内容,过滤不必要的字符串,确保安全。
4.将图片或者flash下载到本地的方法。
PHP代码:
if(@copy($url,$newurl)){
echo ‘ok’;
}
图片下载函数
PHP代码:
/*本存图片函数*/
function getimg($url,$filename){
/*判断图片的url是否为空,如果为空停止函数*/
if($url==""){
return false;
}
/*取得图片的扩展名,存入变量$ext中*/
$ext=strrchr($url,".");
/*判断是否是合法的图片文件*/
if($ext!=".gif" && $ext!=".jpg"){
return false;
}
/*读取图片*/
$img=file_get_contents($url);
/*打开指定的文件*/
$fp=@fopen($filename.$ext,"a");
/*写入图片到指点的文件*/
fwrite($fp,$img);
/*关闭文件*/
fclose($fp);
/*返回图片的新文件名*/
return $filename.$ext;
}
5.其他的心得:
采集时要做要容错处理,可以设定为,一个地方采集几次没成功就跳过,避免出错后卡在一个地方不断地采集。
你滑雪了么?在哪里滑的啊?
肯定很好玩,不过很冷吧
如果有照片就发给我看看
感觉你的生活好丰富啊~~
图片明天发给你
把我给摔得。。
的确很冷啊,尤其是还在下雪
学习了.谢谢分享