写此次博客其实事出有因,前几天呢,一个很是优秀的学姐在QQ空间里晒了本身的CSDN博客的总阅读量,达到了7万+,很厉害了,并且确实她的博文都是精髓,我就也想来看看个人博客总阅读量了,看看何时能达到人家的高度,可是博客园恰恰就没有这个功能(CSDN是能够直接在首页看的)。因而乎,想尽一切办法,要来统计阅读量了,看看别人写的使用其余的统计工具,把代码放在博客园的公告栏,我也就放了个站长联盟:http://www.cnzz.com的统计代码(具体操做能够百度,免费申请帐号的),虽然,它统计的数据更多,可是呢,它只能统计我从使用这个工具以后的访问量,也就是,到如今为止,个人全部博客到底拥有多少的阅读量,仍是没能统计出来,那不仍是没解决问题嘛,这就很尴尬了。。。html
坐在电脑前,发了一会呆,忽然,想起来,哎,这下学的Python爬虫或许能够派上用场了,因而乎,我就开始了愉快的爬虫统计阅读量之路,其实也很简单,抓取博客园博文的每一页,而后利用xpath解析出阅读量,而后进行加和就好了,为了作持久化,随时看看阅读量的增长状况,我就写入了一个文本文件,每次就两行内容,查询时间和总阅读量,固然,我在控制台能够清晰的查看每页每条博文的阅读量。这下可总算是把问题解决了,182篇博文,总阅读量:35205,差很少是学姐的一半,继续努力,看明年毕业时能不能达到学姐的高度,下面是最终的代码,固然还有不少不足之处,但愿你们多多指教ide
#导入须要的模块 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()