PHP开发案例:用PHP写一个简单的蜘蛛统计代码

在前面的文章中我们已经学习了怎么来识别蜘蛛(搜素引擎的爬虫),现在我们来运用我们学习到的知识写一个简单的程序。当然你必须在你需要统计的页面引入spider.php,否则是无法统计到的哦!

图片

一、spider.php

<?php
function spider(){
$spider='0';//首先定义蜘蛛的默认值为0
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$user_agent=strtolower($user_agent);
if(strpos($user_agent,'baidu.php')>='1'){$spider='0';
}elseif(strpos($user_agent,'spider_log.php')>='1'){$spider='0';
}elseif(strpos($user_agent,'spider.php')>='1'){$spider='0';
}elseif(strpos($user_agent,'google')>='1'){$spider='谷歌';
}elseif(strpos($user_agent,'bing')>='1'){$spider='必应';
}elseif(strpos($user_agent,'Slurp')>='1'){$spider='雅虎';
}elseif(strpos($user_agent,'ahrefs')>='1'){$spider='国外SEO蜘蛛';
}elseif(strpos($user_agent,'baidu')>='1'){$spider='百度';
}elseif(strpos($user_agent,'sogou')>='1'){$spider='搜狗';
}elseif(strpos($user_agent,'yahoo')>='1'){$spider='雅虎';
}elseif(strpos($user_agent,'search')>='1'){$spider='必应';
}elseif(strpos($user_agent,'yodao')>='1'){$spider='有道';
}elseif(strpos($user_agent,'mediabot')>='1'){$spider='谷歌广告';
}elseif(strpos($user_agent,'soso')>='1'){$spider='360搜搜';
}elseif(strpos($user_agent,'ia_archiver')>='1'){$spider='Alexa';
}elseif(strpos($user_agent,'bot',)>='1'){$spider='其他蜘蛛';
}elseif(strpos($user_agent,'spider')>='1'){$spider='其他蜘蛛';
}elseif(strpos($user_agent,'robot')>='1'){$spider='其他蜘蛛';
}elseif(strpos($user_agent,'spiders')>='1'){$spider='其他蜘蛛';
}
return $spider;
}
if(spider()!='0'){
$html[0]=$spider;//蜘蛛名称
$html[1]=$_SERVER["REMOTE_ADDR"];//IP
$html[2]=$_SERVER["SERVER_PORT"];//端口
$html[3]=$_SERVER["HTTP_REFERER"];//访问页面,这里的访问页面为什么是上级页面,因为我们实在网页中使用js代码调用本文件的,如果在你网页的PHP中直接引用本程序
//这里$_SERVER["HTTP_REFERER"]需要换为$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$html[4]=date('Y-m-d H:i:s',time());//爬取时间
$html[5]=$_SERVER["REQUEST_METHOD"];//访问页面的请求方式
$html[6]=$_SERVER["QUERY_STRING"];//query值
$html=$html[0].'|'.$html[1].'|'.$html[2].'|'.$html[3].'|'.$html[4]."<->";
$file=date("Y-m-d",time()).'.txt';
@file_put_contents("$file",$html, FILE_APPEND);//将蜘蛛爬取信息添加进txt文件保存到本地
}
?>

二、index.php

<?php
$file=date("Y-m-d",time()).'.txt';
@$file = file_get_contents("$file");//获得内容 
@$file = explode("<->",$file);
$x=count($file)-1;
$page=$_GET['page'];
$nums=50;
$pages=$x/$nums;
$pages=ceil($pages);
if($page==null or $page==0 or $page==1){
$page=1;
$max=$nums-1;
$min=0;
}else{
$max=$page*$nums-1;
$min=($page-1)*$nums;
$uppage=$page-1;
$upurl='<a href="http://spider.wensha.info/index.php?page='.$uppage.'">上一页</a>';
$nextpage=$page+1;
$nexturl='<a href="http://spider.wensha.info/index.php?page='.$nextpage.'">下一页</a>';
}
if($page<$pages){
$nextpage=$page+1;
$nexturl='<a href="http://spider.wensha.info/index.php?page='.$nextpage.'">下一页</a>';    
}
if($page>$pages){
$max=$x-1;  
$uppage=$page-1;
$upurl='<a href="http://spider.wensha.info/index.php?page='.$uppage.'">上一页</a>';
$nexturl='';
}
if($page=$pages){
$max=$x-1;
$upurl='';
$nexturl='';
}
$b=0;
for($i=$min;$i<=$max;$i++){
$b=$b+1;
$log = explode("|",$file[$i]);
$echo=<<<EOT
        <tr>
            <td>
                &emsp;$b 、 $log[0]
            </td>
            <td>
               &emsp;$log[1]
            </td>
            <td>
              &emsp;$log[4]
            </td>
            <td>
               &emsp;<a href="$log[3]" target="_blank">$log[3]</a>
            </td>
        </tr>
EOT;
$html=$html.$echo;
}
?>
<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文煞php笔记网 - Spider蜘蛛爬取记录</title>
    <link rel="stylesheet" rev="stylesheet" href="style/main.css" type="text/css" media="all"/>
</head>
<body>
 <header>
  <h1>文煞PHP笔记网</h1>
 </header>
  <nav>
     <a><strong>Spider蜘蛛爬取记录列表</strong>&nbsp;&nbsp;时间:<?=date("Y年m月d日",time())?></a></nav>
<div>
    <table width="100%" class="table">
        <thead>
            <tr>
                <th>
                    Spider名称
                </th>
                <th>
                    SpiderIP
                </th>
                <th>
                    访问时间
                </th>
                <th>
                    访问页面
                </th>
            </tr>
        </thead>
<?=$html?>
    </table>   
    <center></ecnter>共<?=$x?>条记录&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://spider.wensha.info/index.php">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;<?=$upurl?>&nbsp;&nbsp;&nbsp;&nbsp;<?=$nexturl?>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://spider.wensha.info/index.php?page=<?=$pages?>">尾页</a>&nbsp;&nbsp;&nbsp;&nbsp;<?=$page?>/<?=$pages?></center>
    </div>
 <footer>
     <p><a rel="external nofollow" href="http://beian.miit.gov.cn/" target="_blank">黔ICP备2023001763号-1</a></p>
  <p>版权所有  2023   文煞PHP笔记网蜘蛛统计代码v.0.0.1</p >
 </footer>
</body>

三、main.css

body {
   margin: 0;
   padding: 0;
   font-family: Arial, sans-serif;
   background-color: #f2f2f2;
  }
  header {
   background-color: #333;
   color: #fff;
   padding: 10px;
   text-align: center;
  }
  nav {
   background-color: #ddd;
   padding: 10px;
   text-align: center;
  }
  nav a {
   display: inline-block;
   padding: 10px;
   color: #333;
   text-decoration: none;
  }
  section {
   padding: 20px;
   text-align: center;
  }
  footer {
   background-color: #333;
   color: #fff;
   padding: 20px;
   text-align: center;
  }
  @media only screen and (min-width: 600px) {
   header {
    padding: 20px;
   }
   nav {
    display: flex;
    justify-content: space-around;
   }
   nav a {
    padding: 20px;
   }
   section {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
   }
   section article {
    flex-basis: 30%;
    margin-bottom: 20px;
   }
  }
table
        {
            border-collapse: collapse;
            margin: 0 auto;
        }
        table td, table th
        {
            border: 1px solid #cad9ea;
            color: #666;
            height: 30px;
        }
        table thead th
        {
            background-color: #CCE8EB;
            width: 100px;
        }
        table tr:nth-child(odd)
        {
            background: #fff;
        }
        table tr:nth-child(even)
        {
            background: #F5FAFA;
        }
    a{
        color:#999999;
        }
    a:hover{
        color:#009900;
        }
    a:active{
        color:#F707EE;
        }

提示:这里的代码虽然本站已经测试过,但是在发布的时候做了修改,你应该根据错误提示修改相关代码。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文煞

请你告诉我如何描述此刻的感激!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值