zoukankan      html  css  js  c++  java
  • 搜索引擎爬虫记录器

    今天在ChinaUnix在看到一段记录爬虫程序的代码:

    function saveRobot($dir)
    {
            $addtime = date('Y-m-d H:i:s',time());
            $GetLocationURL= "http://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] ;
            $agent1 = $_SERVER["HTTP_USER_AGENT"] ;  
            $agent=strtolower($agent1);
            $Bot='';
            if (strpos($agent,"googlebot")>-1){$Bot = "Google";}           
            if (strpos($agent,"mediapartners-google")>-1){$Bot = "Google";}
            if (strpos($agent,"baiduspider")>-1){$Bot = "Baidu";}
            if (strpos($agent,"sogou spider")>-1){$Bot = "Sogou";}
            if (strpos($agent,"sosospider")>-1){$Bot = "Soso";}
            if($Bot!="")
            {
                    $mDateTime=date("Y-m-d");
                    //检查今天表存在否,不存在就建立。
                    file_put_contents($dir."/$mDateTime.html","$Bot - $GetLocationURL - $addtime <br>",FILE_APPEND);
                    //echo $agent .' - ' .$Bot .' - ' . $GetLocationURL;
            }
    }

    受此启发,可以看出,爬虫程序在访问你的网站时是通过$_SERVER["HTTP_USER_AGENT"]来标识自己的,不同的爬虫有不同的名字。

     

    在网上搜索了一个完整的爬虫记录程序,贴出来供大家参考:

    <?php
    /**
      * 名称:抓虫助手 1.0
      * 文件:cls_spider.php
      
      * --------说明-----------------
      * 类文件的作用是监控搜索引擎爬虫对网站的操作。
      * 本类为php代码,只适用于php系统的网站。
      * 代码没有使用到数据库,直接把记录写在文本文件中,请在根目录建立spider文件夹。
      * 代码产生的记录,仅供参考,并不保证包含所有的记录,因为没有运行到本代码的文件是不会记录的。
      * 本代码为免费代码,可以随便复制,修改使用,但是希望能保留一点我的版权信息。
      
      * --------使用方法-------------
      * 请将需要统计的页面加入以下代码,并调用,一般修改在全局调用的文件中。
    
      * require(ROOT_PATH . '本文件目录/cls_spider.php');
      * $spider=new spider();
    
      * 如果有不会安装的朋友 可以通过以下方式联系我帮忙。
      * QQ: 235534
      * EMAIL: dreamisok@qq.com
      * 博客: http://blog.toptao123.com
      * 请支持一下我的网站 http://www.ataobao.net http://www.toptao123.com 欢迎交换链接
    */
    
    class spider
    {
        var $searchbot    = "";
        var $tlc_thispage = "";
        var $filename     = "";
        var $timestr      = "";
        var $spider_array = array("Googlebot"=>"googlebot",
                                  "GOOGLE ADSENSE"=>"mediapartners-google",
                                  "YODAO"=>"yodaobot",
                                  "MSNbot"=>"msnbot",
                                  "Yahoobot"=>"slurp",
                                  "Baiduspider"=>"baiduspider",
                                  "Sohubot"=>"sohu-search",
                                  "IASK"=>"iaskspider",
                                  "SOGOU"=>"sogou",
                                  "Robozilla"=>"robozilla",
                                  "Lycos"=>"lycos");
    
        function __construct()
        {
            $this->tlc_thispage=addslashes($_SERVER["REQUEST_URI"]);
            $this->filename='spider/'.date("ymd").'.txt';
            $this->timestr=$this->nowtime();
            $this->searchbot = $this->get_naps_bot();
            $this->spider();
        }
    
        function spider()
        {
            if(!empty($this->searchbot))
            {
                $writestring="Time:".$this->timestr." Robot:".$this->searchbot." URL:".$this->tlc_thispage."\n";
                $data=fopen($this->filename,"a");
                fwrite($data,$writestring);
                fclose($data);
            }
        }
    
        function get_naps_bot()
        {
            if(isset($_SERVER['HTTP_USER_AGENT']))
            {
                $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
                foreach($this->spider_array as $key=>$value)
                {
                    if (strpos($useragent, $value) !== false)
                    {
                        return $key;
                    }
                }
            }
            return false;
        }
    
        function nowtime()
        {
            $date=date("Y-m-d.G:i:s");
            return $date;
        }
    }
    ?>
  • 相关阅读:
    C#对文件的操作
    Quartz使用
    北邮校园网自动登录 python
    interactive python ---- week5
    interactive python ----pong game
    自旋锁(spinlock)(转)
    interactive python(3)
    interactive python(2)
    Ubuntu下为Firefox安装Adobe Flash Player(转)
    flex中list 控件行中添加Button后的点击事件处理
  • 原文地址:https://www.cnblogs.com/eastson/p/2796295.html
Copyright © 2011-2022 走看看