Python实现统计文章阅读量的方法详解

作者:极限之旅 时间:2023-11-02 23:28:46 

前言

写这次博客其实事出有因,前几天呢,一个非常优秀的学姐在QQ空间里晒了自己的CSDN博客的总阅读量,达到了7万+,很厉害了,而且确实她的博文都是精髓,我就也想来看看我的博客总阅读量了,看看什么时候能达到人家的高度,但是博客园偏偏就没有这个功能(CSDN是可以直接在首页看的)。于是乎,想尽一切办法,要来统计阅读量了,看看别人写的使用其他的统计工具,把代码放在博客园的公告栏,我也就放了个站长联盟的统计代码(具体操作可以百度,免费申请账号的),虽然,它统计的数据更多,但是呢,它只能统计我从使用这个工具之后的访问量,也就是,到现在为止,我的所有博客到底拥有多少的阅读量,还是没能统计出来,那不还是没解决问题嘛,这就很尴尬了。。。

坐在电脑前,发了一会呆,突然,想起来,哎,这下学的Python爬虫或许可以派上用场了,于是乎,我就开始了愉快的爬虫统计阅读量之路,其实也很简单,抓取博客园博文的每一页,然后利用xpath解析出阅读量,然后进行加和就行了,为了做持久化,随时看看阅读量的增加情况,我就写入了一个文本文件,每次就两行内容,查询时间和总阅读量,当然,我在控制台可以清晰的查看每页每条博文的阅读量。这下可总算是把问题解决了,182篇博文,总阅读量:35205,差不多是学姐的一半,继续努力,看明年毕业时能不能达到学姐的高度,下面是最终的代码,当然还有很多不足之处,希望大家多多指教

实现代码

#导入需要的模块
import time
import requests
from lxml import etree

#进行UA伪装
headers={
   "User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"
}
#创建文件,存储爬到的数据,做持久化,以追加的方式打开,可读可写
fp=open('./counter.txt','a+',encoding = 'utf-8')
#记录当前查询时间
select_time=time.strftime('%Y.%m.%d %H:%M:%S ',time.localtime(time.time()))
fp.write('查询的时间为:'+select_time+'\n')
def spider():
   #总阅读量
   counts=0
   #分页爬取数据加和
   for page_num in range(1,20):
       #设置url
       url="https://www.cnblogs.com/andrew3/default.html?page=%d"
       new_url=format(url%page_num)
       #获取页面数据
       page_text=requests.get(url=new_url,headers=headers).text
       tree=etree.HTML(page_text)
       #解析数据,得到每页每篇博文的阅读量
       count_list=tree.xpath('//div[@class="forFlow"]/div/div[@class="postDesc"]/span[1]/text()')
       print(count_list)
       #每一页的阅读量
       sum=0
       #计算每页的阅读量
       for i in range(len(count_list)):
           sum+=int(count_list[i][3:len(count_list[i])-1])
       #计算总阅读量
       counts+=sum
       #打印每页每篇博文的阅读量
       print(sum,counts)
   #总阅读量持久化
   fp.write("总阅读量为:%s" % counts + '\n')
#关闭文件,释放资源
def close_file():
   fp.close()
def main():
   spider()
   close_file()
if __name__ == '__main__':
   main()

效果图

Python实现统计文章阅读量的方法详解

Python实现统计文章阅读量的方法详解

来源:https://www.cnblogs.com/andrew3/p/12969703.html

标签:Python,文章,阅读量
0
投稿

猜你喜欢

  • Python run()函数和start()函数的比较和差别介绍

    2022-07-04 18:38:47
  • python实现自主查询实时天气

    2021-07-02 22:43:09
  • sklearn的predict_proba使用说明

    2023-10-24 11:22:08
  • Python使用正则表达式过滤或替换HTML标签的方法详解

    2023-02-08 10:49:52
  • python3图片转换二进制存入mysql

    2023-05-18 07:06:50
  • Bootstrap风格的WPF样式

    2024-05-02 17:32:17
  • python在不同层级目录import模块的方法

    2023-02-05 01:45:03
  • Python中的取模运算方法

    2023-11-10 04:39:56
  • Golang import本地包和导入问题相关详解

    2024-01-30 09:35:37
  • 基于python制作简易版学生信息管理系统

    2022-04-15 18:39:45
  • 简要介绍SQL Server 2008新的事件处理系统

    2009-12-22 08:15:00
  • Python3 用什么IDE开发工具比较好

    2022-10-03 13:43:07
  • Python+radar实现随机日期时间的生成

    2021-04-16 23:22:57
  • 利用python实现汉字转拼音的2种方法

    2023-12-08 09:58:50
  • python定时检测无响应进程并重启的实例代码

    2023-11-29 11:00:39
  • 段正淳的css笔记(6)-浅谈css框架开发

    2008-01-13 22:42:00
  • Django 如何实现文件上传下载

    2021-07-16 02:54:15
  • pycharm激活方法到2099年(激活流程)

    2022-11-17 05:45:35
  • 轻松掌握SQL Server数据库的六个实用技巧

    2009-01-15 12:56:00
  • GO 函数式选项模式(Functional Options Pattern)

    2024-05-22 10:16:05
  • asp之家 网络编程 m.aspxhome.com