本站所有内容仅限用于学习和研究目的,如有侵权请邮件与我们联系处理!
世上事本无难易,为之则易!

网站首页 蜘蛛池 蜘蛛池教程 正文

分UA文本统计蜘蛛并展现的php代码

曹操 2023-07-18 蜘蛛池教程 1091 ℃ 0 评论 12130字 free 收藏

这是蜘蛛统计,分别统计百度蜘蛛、搜狗蜘蛛、360蜘蛛、谷歌蜘蛛、bing蜘蛛、神马蜘蛛和其他蜘蛛。

统计为txt格式,按照:时间 抓取的链接,保存为txt,一行一个。

分别保存在对应的文件夹,如百度蜘蛛就保存在spider/baidu文件夹下,搜狗就保存在spider/sogou文件夹下,如果不存在则新建。

里面又有年月日命名的文件夹,如20230101,每天的蜘蛛来访则保存到对应的日期,如果不存在则新建。

最后在当前页面,图表展现txt数据。

<?php
// 蜘蛛类型数组
$spiders = array('baidu', 'sogou', '360', 'google', 'bing', 'sm', 'other');

// 获取当前日期
$currentDate = date('Ymd');

// 循环检查并创建对应的文件夹
foreach ($spiders as $spider) {
    $spiderDir = 'spider/' . $spider;
    if (!file_exists($spiderDir)) {
        mkdir($spiderDir, 0777, true);
    }

    $dateDir = $spiderDir . '/' . $currentDate;
    if (!file_exists($dateDir)) {
        mkdir($dateDir, 0777, true);
    }
}

// 获取访问者IP
$visitorIP = $_SERVER['REMOTE_ADDR'];

// 获取蜘蛛类型
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$spiderType = 'other'; // 默认为其他蜘蛛
if (strpos($userAgent, 'Baiduspider') !== false) {
    $spiderType = 'baidu';
} elseif (strpos($userAgent, 'Sogou') !== false) {
    $spiderType = 'sogou';
} elseif (strpos($userAgent, '360Spider') !== false) {
    $spiderType = '360';
} elseif (strpos($userAgent, 'Googlebot') !== false) {
    $spiderType = 'google';
} elseif (strpos($userAgent, 'Bingbot') !== false) {
    $spiderType = 'bing';
} elseif (strpos($userAgent, 'YoudaoBot') !== false) {
    $spiderType = 'sm';
}

// 将访问信息保存到对应的文件
$logFile = 'spider/' . $spiderType . '/' . $currentDate . '/spider.txt';
$logData = date('H:i:s') . ' ' . $visitorIP . "\n";
file_put_contents($logFile, $logData, FILE_APPEND);

// 读取日志文件
$logLines = array();
if (file_exists($logFile)) {
    $logData = file_get_contents($logFile);
    $logLines = explode("\n", trim($logData));
}

// 显示统计数据
echo '<html>
<head>
<title>蜘蛛统计</title>
<style>
table {
    border-collapse: collapse;
    width: 400px;
}
th, td {
    border: 1px solid #ddd;
    padding: 8px;
    text-align: left;
}
</style>
</head>
<body>
<h1>蜘蛛统计</h1>';

foreach ($spiders as $spider) {
    $spiderDir = 'spider/' . $spider;
    $dateDir = $spiderDir . '/' . $currentDate;
    $logFile = $dateDir . '/spider.txt';

    echo '<h2>' . ucfirst($spider) . '</h2>';

    if (file_exists($logFile)) {
        $logData = file_get_contents($logFile);
        $logLines = explode("\n", trim($logData));

        echo '<table>
        <tr>
        <th>时间</th>
        <th>抓取的链接</th>
        </tr>';

        foreach ($logLines as $line) {
            $logParts = explode(' ', trim($line));
            $time = $logParts[0];
            $link = isset($logParts[1]) ? $logParts[1] : '-';

            echo '<tr>
            <td>' . $time . '</td>
            <td>' . $link . '</td>
            </tr>';
        }

        echo '</table>';
    } else {
        echo '<p>暂无数据</p>';
    }
}

echo '</body>
</html>';
?>

当然可以图表形式展示txt数据,可以使用图表库来实现。

下面是一个使用Chart.js库来绘制柱状图的例子:

<!DOCTYPE html>
<html>
<head>
    <title>蜘蛛统计图表</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <canvas id="chart"></canvas>

    <script>
        // 读取日志数据
        var logData = `<?php echo $logData; ?>`; // 将$logData替换为实际的日志数据

        // 解析日志数据
        var lines = logData.split('\n');
        var labels = [];
        var counts = [];

        for (var i = 0; i < lines.length; i++) {
            var parts = lines[i].split(' ');
            if (parts.length >= 2) {
                labels.push(parts[0]);
                counts.push(parseInt(parts[1]));
            }
        }

        // 创建图表
        var ctx = document.getElementById('chart').getContext('2d');
        var chart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: labels,
                datasets: [{
                    label: '访问次数',
                    data: counts,
                    backgroundColor: 'rgba(0, 123, 255, 0.5)',
                    borderColor: 'rgba(0, 123, 255, 1)',
                    borderWidth: 1
                }]
            },
            options: {
                responsive: true,
                scales: {
                    x: {
                        display: true,
                        title: {
                            display: true,
                            text: '时间'
                        }
                    },
                    y: {
                        display: true,
                        title: {
                            display: true,
                            text: '访问次数'
                        },
                        beginAtZero: true
                    }
                }
            }
        });
    </script>
</body>
</html>

Tags:蜘蛛统计搜狗蜘蛛

必看说明

  • 本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。
  • 本站文章或仅为文本内容原创,非程序原创。如有侵权、不妥之处,请联系站长第一时间删除。敬请谅解!
  • 本站所有内容严格遵守国家法律的条例,所有研究的算法技术均来源于搜索引擎公开默认允许用户研究使用的接口。
  • 阅读本文及获取资源前,请确保您已充分阅读并理解《访问曹操SEO网站需知:行为准则》。
  • 本站分享的任何工具、程序仅供学习参考编写架构,仅可在本地的虚拟机内断网测试,严禁联网运行或上传搭建!
  • 任何资源必须在下载后24个小时内,从电脑中彻底删除。不得传播或者用于其他任何用途!否则一切后果用户自负!
  • 转载请注明 : 文章转载自  站群程序 分UA文本统计蜘蛛并展现的php代码
  • 本文标题:《分UA文本统计蜘蛛并展现的php代码》
  • 本文链接:http://www.zqcx.cn/2015.html

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

网站分类
近期评论
文章归档
标签列表
站点信息
  • 文章总数:2025
  • 页面总数:7
  • 分类总数:46
  • 标签总数:339
  • 评论总数:9366
  • 浏览总数:5898972