当前位置:首页 > 编程技术 > php技术 > 正文内容

网站中记录爬虫最简单直观的方法

鱼湘肉丝1年前 (2022-12-18)php技术702

每次做网站的时候都会想着如何记录爬虫,可网上现成的轮子并没有提供现成的给你用,不信你可以查查看。

那么没轮子怎么造轮子最快。

一种方法就是搜集现成的UA添加进数据库里,然后再调用,这种方法应当是第一个能想到的法子,那么他实际上并不实用。

因为爬虫的UA 和 IP 并不完全固定 或许又改了呢? 

所以我想的一个法子就是 

  1. 记录用户的信息

  2. CREATE TABLE `hkcms_arecords` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `create_time` int(11) DEFAULT NULL COMMENT '创建时间',
      `update_time` int(11) DEFAULT NULL COMMENT '修改时间',
      `ip` varchar(255) DEFAULT NULL COMMENT 'ip',
      `ua` varchar(255) DEFAULT NULL COMMENT '浏览器UA',
      `iptype` varchar(255) DEFAULT NULL COMMENT 'ip类型',
      `access_address` varchar(255) DEFAULT NULL COMMENT '访问地址',
      `equipment_type` varchar(255) DEFAULT NULL COMMENT '设备类型',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=6268 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
  3. 新增爬虫记录表 

  4. CREATE TABLE `hkcms_crawlerlog` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `ip` varchar(255) DEFAULT NULL COMMENT 'ip',
      `img` varchar(255) DEFAULT NULL COMMENT '爬虫图片',
      `ua` text COMMENT '爬虫UA',
      `status` enum('normal','hidden','reject','audit') DEFAULT 'normal',
      `crawler` varchar(255) DEFAULT NULL COMMENT '爬虫名称',
      `type` varchar(255) DEFAULT NULL COMMENT '记录类型',
      `create_time` int(11) DEFAULT NULL COMMENT '创建时间',
      `update_time` int(11) DEFAULT NULL COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=6248 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;




 当我们查看用户访问记录的时候 观察UA 毕竟知名的爬虫就那么几个 

 看到UA熟悉的 直接百度查一下 UA 具体属于哪只爬虫  我们添加进爬虫记录表即可 

 那么添加完后如何展示呢 ?

其中$data  为 用户访问记录

$crawlerArr = Crawlerlog::select();
foreach ($data as $k=>$v){
    foreach ($crawlerArr as $c){
        if($v[$c['type']] == $c[$c['type']]){
            $data[$k]['name'] = $c['crawler']; // 例如百度爬虫
            $data[$k]['imgs'] = $c['img'];
        }
    }
    if(!isset($data[$k]['name'])){
        $data[$k]['name'] = '普通用户';
        $data[$k]['imgs'] =  '/static/creimg/img/user.png';
    }
}


本文链接:https://yun.ha.cn/post/53.html 转载需授权!

分享到:

扫描二维码推送至手机访问。

版权声明:本文由云蛤社区发布,如需转载请注明出处。

技术交流QQ群:657091037

部分文章和资源从互联网中收集,如有侵权 联系站长删除。

本文链接:https://yun.ha.cn/post/53.html

分享给朋友:

“网站中记录爬虫最简单直观的方法” 的相关文章

thinkphp使用join 关联查询和模型关联查询的区别

thinkphp使用join 关联查询和模型关联查询的区别

对于关联查询,我用的更多的都是 一对一  一对多  多对多的 关联查询 。而他们都有一个很大的问题,当出现多表联查的时候写起来不太灵活,这确实是一个大问题,虽然说代码写起来很规范,但有个问题就是代码量太多了 。  而 tinkphp 的join 查询是原生查询 ...

php写一个雪花算法案例

php写一个雪花算法案例

雪花算法是一种分布式 ID 生成算法。它可以在一个分布式系统中生成唯一的 ID。下面是一个简单的 PHP 实现:<?php /**  *  分布式 id 生成类     组成: &...

PHP 使用curl发送GET、POST请求

PHP 使用curl发送GET、POST请求

GET请求<?php   //初始化 $curl = curl_init();   //设置url curl_setopt($curl, CURLOPT_URL, 'http://httpbin.org/get&#...

php自动计算并转换流量单位(b kb mb gb tb转换)的方法

php自动计算并转换流量单位(b kb mb gb tb转换)的方法

   我们都知道系统的流量统计都是以字节单位进行存储,如果我们在做流量统计相关功能时,不可能直接将字节显示给用户,如果直接显示比特将会是很长一段数字,例如:1KB = 1024b1MB = 1048576b1GB = 1073741824b  由此可...

php时间日期计算方法

php时间日期计算方法

  php自带的函数strtotime(),可以用来快速计算一天后、一周后、一个月后、一年后的时间。可以用于计算会员到期日,产品到期时间等等。具体用法$today = date('Y-m-d'); //今天的日期 $wutian =...

php通过时间戳自动计算 1分钟前,N小时前,N年前的例子

php通过时间戳自动计算 1分钟前,N小时前,N年前的例子

  最近刚好有一个php项目需求,需要用显示帖子的发布时间,时间显示格式要求是这种的:N分钟前,N小时前,N个月前,N年前;其实实现方法有很多种,我这里就用了最简单傻瓜式的方式来写。直接判断秒数来输出对应的时间,具体如下:1分钟 = 60秒1小时 = 3600秒一天(24小时) =&nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。