網站首頁 編程語言 正文
前言
寫這次博客其實事出有因,前幾天呢,一個非常優秀的學姐在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()
效果圖
原文鏈接:https://www.cnblogs.com/andrew3/p/12969703.html
相關推薦
- 2023-04-03 GoLang中拼接字符串性能優化方法詳解_Golang
- 2023-04-12 Python批量刪除txt文本指定行的思路與代碼_python
- 2022-05-13 error hawk@0.10.2: The engine “node“ is incompatib
- 2022-11-16 Android?PickerView底部選擇框實現流程詳解_Android
- 2023-10-10 前端根據后端數據生成表格 行列合并 指定表頭
- 2023-08-16 數據選擇器 uni-data-checkbox,獲取value值
- 2023-04-03 python之語句mode?=?'test'?if?y?is?None?else?'train'問題
- 2022-04-07 代碼詳解Python的函數基礎(1)_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支