收集一些php采集程序需要的函数

十二 29th, 2009

    这篇文章算是我的一个学习备忘,将会收集一些在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.其他的心得:

    采集时要做要容错处理,可以设定为,一个地方采集几次没成功就跳过,避免出错后卡在一个地方不断地采集。

标签:
  1. 十二 31st, 200908:36

    你滑雪了么?在哪里滑的啊?
    肯定很好玩,不过很冷吧
    如果有照片就发给我看看
    感觉你的生活好丰富啊~~

    • zxdker
      十二 31st, 200912:35

      图片明天发给你
      把我给摔得。。
      的确很冷啊,尤其是还在下雪

  2. licream
    一 21st, 201000:10

    学习了.谢谢分享