博客访问人数统计

很早之前就写了这个代码,今天重新更新一下

发现对千分位数字的匹配有些bug

另外对来自不同地区的数据没进行爬取。

爬取数据:http://s04.flagcounter.com/more7/XTPq/

处理逻辑:

1. 爬取数据

2. 构造数组:日期,博客访问量,flag访问量

3. 保存数据到文件

4. 保存pickle文件

5. 生成访问折线图

爬取代码如下所示,详细代码见开源访问:https://github.com/zpfbuaa/blogVisitors

# -*- coding: utf-8 -*-
# @Time    : 2018/5/25 下午1:15
# @Author  : 伊甸一点
# @FileName: getHtml.py
# @Software: PyCharm
# @Blog    : http://zpfbuaa.github.io

import requests
import re
import time
import os

date_pt = re.compile(‘<font face=arial size=-1>(\w+ \d+, \d+)‘)
visitors_pt = re.compile(‘<font face=arial size=2>(\w+)</td><td>‘)
flagViews_pt = re.compile(‘<font face=arial size=2>(\S+)</font></td></tr>‘)

def getTotalBlog(url, pages):

    date = []
    visitors = []
    flagViews = []

    for page in range(1, pages+1):
        newUrl = url + str(page)
        print(newUrl)

        html = requests.get(newUrl).text
        item_date = date_pt.findall(html)
        item_visitors = visitors_pt.findall(html)
        item_flagViews = flagViews_pt.findall(html)

        date.extend(item_date)
        visitors.extend(item_visitors)
        flagViews.extend(item_flagViews)

    return date, visitors, flagViews

def change_data(date, visitors, flagViews):
    print(len(visitors))
    print(len(flagViews))
    for i in range(0, len(date)):
        str_visitor = str(visitors[i])
        str_flagViews = str(flagViews[i])
        if (str_visitor.find(‘,‘) != -1):
            v_split = str_visitor.split(‘,‘)
            visitors[i] = int(v_split[0]) * 1000 + int(v_split[1])
        else:
            visitors[i] = int(str_visitor)

        if (str_flagViews.find(‘,‘) != -1):
            f_split = str_flagViews.split(‘,‘)
            flagViews[i] = int(f_split[0]) * 1000 + int(f_split[1])
        else:
            flagViews[i] = int(str_flagViews)

    return date, visitors, flagViews

def printData(date, visitors, flagViews):
    print(‘Date    Visitors    Flag Counter Views‘)
    for i in range(0, len(date)):
        print(date[i],visitors[i],flagViews[i])

def writeToFile(date, visitors, flagViews, data_root=‘data/‘):

    today = time.strftime(‘%Y%m%d‘, time.localtime(time.time()))
    data_file = data_root+‘blog_‘+str(today)

    f = open(data_file,‘w+‘)
    header = ‘Date\tVisitors\tFlag Counter Views‘+‘\n‘
    f.write(header)

    for i in range(0, len(date)):
        line = date[i]+‘\t‘+str(visitors[i])+‘\t‘+str(flagViews[i])+‘\n‘
        f.write(line)
    f.close()
    return 1

url = ‘http://s04.flagcounter.com/more7/XTPq/‘
pages = 23
date, visitors, flagViews = getTotalBlog(url, pages)

# printData(date, visitors, flagViews)

date, visitors, flagViews = change_data(date, visitors, flagViews)

# printData(date, visitors, flagViews)

flag = writeToFile(date, visitors, flagViews)

print(‘Data Prepare Done!‘)

以下为截止到当前2019年01月12日的访问量折线图

访问入口flag统计图

两者diff差值

原文地址:https://www.cnblogs.com/zpfbuaa/p/10261294.html

时间: 2024-11-08 14:02:23

博客访问人数统计的相关文章

【Jsp】利用Application对象实现访问人数统计功能

利用Application对象实现访问人数的统计很常见,但是一些书籍讲解这一技术的时候,往往没有做完整.一旦服务器重启,由于Application会被销毁,重新建立,人数统计则会再一次从零开始.解决方法,个人认为,应该同时利用到数据库,这样无论服务器要重启或者遭遇到停机什么,被统计的人数还是会一直累计上去,不会丢失.下面就介绍一个例子,解决利用Application对象实现访问人数统计功能由于服务器重启或者停机而导致从零开始的问题,同时介绍如果利用Application对象把保存到web.xml

页面在线访问人数统计&amp;&amp;在线登录人数统计一

一.页面在线访问人数统计 OnlineSessionListener监听器(实现HttpSessionListener)接口来实现页面在线访问人数统计,当有用户访问到页面就会创建一个session,此时会触发public   void   sessionCreated(HttpSessionEvent   se)方法,如果session失效,此时会触发public   void   sessionDestroyed(HttpSessionEvent   se)方法.在此方法里我们用OnlineL

解决coding上的hexo博客访问不了的问题

近日发现部署在coding pages上的个人博客访问不了,初步猜测是服务器日常不稳定,没在意.过了几天还是访问不了,打开网址才发现12月28日-1月10日都在更新,十分无力,摊手. 我的个人博客是在github以及coding上的双向部署,国内坏境使用coding,国外环境使用github,现在coding挂了,那么就想找替代品,初步打算是部署在码云gitee上.于是开始动手. 新建仓库如下 修改配置文件的url,root以及repo地址(解决样式丢失) 上传本地博客 码云开启page服务 申

博客园添加访问人数统计

无意中看到有这个访问量的统计,觉得挺好玩的,我们现在就来添加一个吧: 1. 先到http://www.amazingcounters.com/sign-up.php   这个地址去申请一个帐户,申请时填写好自己的资料,比如 你的统计风格样式.要统计的地址.要统计的类型,是浏览量(PV) 还是 访客数(UV),或者你也可以2个都统计:这些统计数据都是可以任意修改的哟,不过我们最好还是以真实的访问量为主吧: 2. 在上述网站的"Get HTML Code See Statistics"菜单

博客访问统计 收集

clustrmaps 使用地图形式显示访问统计 flagcounter 显示有国旗的访问统计 不蒜子 网站计数,发现hexo next主题默认支持这个统计,只需要在配置文件中 开启即可 amazingcounters 使用数字形式访问统计 2019.10.30 访问,显示 Cloudflare Error 1005 Access denied,感觉是屏蔽了国内的ip,不能正常访问使用 References [转]Hexo博客添加访问统计 - 记录 博客园访客统计的实现 原文地址:https://

搭建自己的技术博客系列(四)博客接入百度统计,随时了解你博客的PV/UV

接入百度统计 新增自己的网站 获取自己的traceid 在config_xml里填写你的id顺便在icarus的主题配置文件下也添加这个配置然后,你就可以看到网站的PV和UV了 原文地址:https://blog.51cto.com/14006572/2437987

第一个Python程序——博客自动访问脚本

动机 今天有朋友写信说他认为自己的wordpress博客内显示的访问统计信息不正常,希望我能为他制造一些访问信息,供他对比.朋友提出的请求是在短时间内快速打开100个不同的博客页面,以便他从产生的访问量变化中理解博客访问数据. 本人作为一个搞计算机的人,有把任何重复性劳动自动化的冲动,所以虽然点开100个网页的任务手工做并不复杂,但还是从一开始就彻底否定了.刚好想学Python很久了,于是就拿这次的小机会来学习一把,顺便记录下第一次的Python学习成果. 本文使用Python 2.7.3实现了

从零开始,搭建博客系统MVC5+EF6搭建框架(5),博客详情页、留言、轮播图管理、右侧统计博文

一.博客系统进度回顾 上一遍博客介绍到,系统已经实现到了发布以及前台布局展示,接下来就是实现一些,详情页,留言.轮播图管理.右侧博文统计信息实现. 二.博客系统详情页实现 2.1先来看看详情页展示的效果 2.2实现控制器在前台控制器中创建一个Blog的控制器,主要是展示博客分类以及详情页 Action详情页实现: 1 /// <summary> 2 /// 详情页 3 /// </summary> 4 /// <param name="id"><

自定义自己的博客园博客首页

直接上代码 博客侧边栏公告: 访问量会计算访问过自己博客的人数(只要刷新,就会累计)!正常的访问量不应该这么计算! 联系我是通过腾讯QQ的方式联系我,会根据QQ的在线状态显示不同颜色的图标. 访问量:<img src="http://s09.flagcounter.com/mini/6gcU/bg_FF2465/txt_21917B/border_ECF230/flags_0/" alt="Candyメ奶糖" border="0">&