PHP代码实现爬虫记录――超管用


Posted in PHP onJuly 31, 2015

实现爬虫记录本文从创建crawler 数据库,robot.php记录来访的爬虫从而将信息插入数据库crawler,然后从数据库中就可以获得所有的爬虫信息。实现代码具体如下:

数据库设计

create table crawler  
(  
 crawler_ID bigint() unsigned not null auto_increment primary key,
 crawler_category varchar() not null,
 crawler_date datetime not null default '-- ::',
 crawler_url varchar() not null,
 crawler_IP varchar() not null
)default charset=utf;

以下文件 robot.php 记录来访的爬虫,并将信息写入数据库:

<?php
 $ServerName = $_SERVER["SERVER_NAME"] ; 
 $ServerPort = $_SERVER["SERVER_PORT"] ; 
 $ScriptName = $_SERVER["SCRIPT_NAME"] ; 
 $QueryString = $_SERVER["QUERY_STRING"]; 
 $serverip = $_SERVER["REMOTE_ADDR"] ; 
 $Url="http://".$ServerName;
 if ($ServerPort != "")
 {
  $Url = $Url.":".$ServerPort ;
 } 
 $Url=$Url.$ScriptName;
 if ($QueryString !="")
 {
  $Url=$Url."?".$QueryString;
 }  
 $GetLocationURL=$Url ;
 $agent = $_SERVER["HTTP_USER_AGENT"]; 
 $agent=strtolower($agent);
 $Bot ="";
 if (strpos($agent,"bot")>-)
 {
  $Bot = "Other Crawler";
 }
 if (strpos($agent,"googlebot")>-)
 {
  $Bot = "Google";
 }   
 if (strpos($agent,"mediapartners-google")>-)
 {
  $Bot = "Google Adsense";
 }
 if (strpos($agent,"baiduspider")>-)
 {
  $Bot = "Baidu";
 }
 if (strpos($agent,"sogou spider")>-)
 {
  $Bot = "Sogou";
 }
 if (strpos($agent,"yahoo")>-)
 {
  $Bot = "Yahoo!";
 }
 if (strpos($agent,"msn")>-)
 {
  $Bot = "MSN";
 }
 if (strpos($agent,"ia_archiver")>-)
 {
  $Bot = "Alexa";
 }
 if (strpos($agent,"iaarchiver")>-)
 {
  $Bot = "Alexa";
 }
 if (strpos($agent,"sohu")>-)
 {
  $Bot = "Sohu";
 }
 if (strpos($agent,"sqworm")>-)
 {
  $Bot = "AOL";
 }
 if (strpos($agent,"yodaoBot")>-)
 {
  $Bot = "Yodao";
 }
 if (strpos($agent,"iaskspider")>-)
 {
  $Bot = "Iask";
 }
 require("./dbinfo.php");
 date_default_timezone_set('PRC'); 
 $shijian=date("Y-m-d h:i:s", time());
 // 连接到 MySQL 服务器
 $connection = mysql_connect ($host, $username, $password);
 if (!$connection)
 {
  die('Not connected : ' . mysql_error());
 }
 // 设置活动的 MySQL 数据库
 $db_selected = mysql_select_db($database, $connection);
 if (!$db_selected)
 {
  die ('Can\'t use db : ' . mysql_error());
 }
 // 向数据库插入数据
 $query = "insert into crawler (crawler_category, crawler_date, crawler_url, crawler_IP) values ('$Bot','$shijian','$GetLocationURL','$serverip')";
 $result = mysql_query($query);
 if (!$result)
 {
  die('Invalid query: ' . mysql_error());
 }
?>

成功了,现在访问数据库即可得知什么时候哪里的蜘蛛爬过你的什么页面。

view sourceprint?
<?php
include './robot.php';
include '../library/page.Class.php';
$page = $_GET['page'];
include '../library/conn_new.php';
$count = $mysql -> num_rows($mysql -> query("select * from crawler"));
$pages = new PageClass($count,,$_GET['page'],$_SERVER['PHP_SELF'].'?page={page}');
$sql = "select * from crawler order by ";
$sql .= "crawler_date desc limit ".$pages -> page_limit.",".$pages -> myde_size;
$result = $mysql -> query($sql);
?>
<table width="">
 <thead>
  <tr> 
   <td bgcolor="#CCFFFF"></td> 
   <td bgcolor="#CCFFFF" align="center" style="color:#">爬虫访问时间</td> 
   <td bgcolor="#CCFFFF" align="center" style="color:#">爬虫分类</td>
   <td bgcolor="#CCFFFF" align="center" style="color:#">爬虫IP</td>
   <td bgcolor="#CCFFFF" align="center" style="color:#">爬虫访问的URL</td>
  </tr>
 </thead>
<?php
while($myrow = $mysql -> fetch_array($result)){
?>
<tr>
 <td width=""><img src="../images/topicnew.gif" /></td>
 <td width="" style="font-family:Georgia"><? echo $myrow["crawler_date"] ?></td>
 <td width="" style="color:#FA"><? echo $myrow["crawler_category"] ?></td>
 <td width=""><? echo $myrow["crawler_IP"] ?></td>
 <td width=""><? echo $myrow["crawler_url"] ?></td>
</tr>
<?php
 }
?>
 </table>
<?php
 echo $pages -> myde_write();
?>

以上代码就是PHP代码实现爬虫记录——超管用的全部内容,希望对大家有所帮助。

PHP 相关文章推荐
PHP中实现进程间通讯
Oct 09 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
PHP7数组的底层实现示例
Aug 25 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
PHP 前加at符合@的作用解析
Jul 31 #PHP
PHP查看当前变量类型的方法
Jul 31 #PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 #PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 #PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 #PHP
利用PHP将部分内容用星号替换
Apr 21 #PHP
php之static静态属性与静态方法实例分析
Jul 30 #PHP
You might like
图象函数中的中文显示
2006/10/09 PHP
PHP 的 __FILE__ 常量
2007/01/15 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
英语系本科生个人求职信
2013/09/21 职场文书
实习自我评价怎么写
2013/12/02 职场文书
欢迎新生标语
2014/10/06 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
辞职信如何写
2015/02/27 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python