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 相关文章推荐
综合图片计数器
Oct 09 PHP
利用php来自动调用不同服务器上的flash
Oct 09 PHP
php session 检测和注销
Mar 16 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
php封装json通信接口详解及实例
Mar 07 PHP
php使用crypt()函数进行加密
Jun 08 PHP
laravel 获取当前url的别名方法
Oct 11 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
php实例化一个类的具体方法
2019/09/19 PHP
Document 对象的常用方法
2009/07/31 Javascript
js中opener与parent的区别详细解析
2014/01/14 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
详解Python中的多线程编程
2015/04/09 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
解决python3输入的坑——input()
2020/12/05 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
this关键字的含义
2015/04/08 面试题
团日活动策划书
2014/02/01 职场文书
信息管理专业自荐书
2014/06/05 职场文书
收款授权委托书
2014/10/02 职场文书
2015年少先队活动总结
2015/03/25 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
如何用Navicat操作MySQL
2021/05/12 MySQL