Python爬蟲實戰-統計博客園閱讀量問題

寫此次博客其實事出有因,前幾天呢,一個很是優秀的學姐在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()

相關文章
相關標籤/搜索