最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python實現(xiàn)文章信息統(tǒng)計的小工具

 更新時間:2023年02月14日 14:08:55   作者:KoiC  
及時的統(tǒng)計可以更好的去分析讀者對于內(nèi)容的需求,了解文章內(nèi)容的價值,以及從側(cè)面認識自己在知識創(chuàng)作方面的能力。本文就來用Python制作一個文章信息統(tǒng)計的小工具?,希望對大家有所幫助

前言

博客園在個人首頁有一個簡單的博客數(shù)據(jù)統(tǒng)計,以博客園官方的首頁為例:

但是這些數(shù)據(jù)不足以分析更為細節(jié)的東西

起初我是想把博客園作為個人學習的云筆記,但在一點點的記錄中,我逐漸把博客園視為知識創(chuàng)作知識分享的平臺

所以從年后開始,就想著做一個類似 CSDN 里統(tǒng)計文章數(shù)據(jù)的工具

這樣的統(tǒng)計功能可以更好的去分析讀者對于內(nèi)容的需求,了解文章內(nèi)容的價值,以及從側(cè)面認識自己在知識創(chuàng)作方面的能力

說了不少無關的話,下面直接進入正題!

程序

這個程序是我昨天晚上一時興起,看到了一位博主的文章 Python爬蟲實戰(zhàn)-統(tǒng)計博客園閱讀量問題 ,對他的代碼做了一些補充和修改。因為想著要更為直觀的展示文章數(shù)據(jù),所以分了幾個模塊去寫,以方便后續(xù)增加和修改功能

程序目前只有三個 .py 文件,爬取數(shù)據(jù)后解析并寫入到 txt 中(后續(xù)會使用更規(guī)范的方法做持久化處理)

主程序 main.py

from spider import spider
from store import write_data


# 設置博客名,例如我的博客地址為:https://www.cnblogs.com/KoiC,此處則填入KoiC
blog_name = 'KoiC'



if __name__ == '__main__':
    post_info = spider(blog_name)
    # print(post_info)
    write_data(post_info, blog_name)
    print('執(zhí)行完畢!')

爬蟲模塊 spider.py

import time
import requests
import re
from lxml import etree


def spider(blog_name):
    """
        爬取相關數(shù)據(jù)
    """
    
    # 設置UA和目標博客url
    headers = {
        "User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41"
    }
    url = "https://www.cnblogs.com/" + blog_name + "/default.html?page=%d"
    
    # 測試訪問
    req = requests.get(url, headers)
    print('測試訪問狀態(tài):%d'%req.status_code)
    
    
    print('開始爬取數(shù)據(jù)...')
    
    post_info = [] # 全部博文信息
    
    #分頁爬取數(shù)據(jù)
    for page_num in range(1, 999):
        
        # 指向目標url
        new_url = format(url%page_num)
        
        # 獲取頁面
        req = requests.get(url=new_url, headers=headers)
        # print(req.status_code)
        
        tree = etree.HTML(req.text)
        
        # 獲取目標數(shù)據(jù)(各博文名稱和閱讀量)
        count_list = tree.xpath('//div[@class="forFlow"]/div/div[@class="postDesc"]/span[1]/text()')        
        title_list = tree.xpath('//div[@class="postTitle"]/a/span/text()')
        
        # 獲取該頁博文數(shù)量
        post_count = len(count_list)
        # 如果該頁沒有博文,跳出循環(huán)
        if post_count == 0:
            break
        
        # 解析目標數(shù)據(jù)
        
        for i in range(post_count):
            # 對數(shù)據(jù)進行處理
            post_title = title_list[i].strip() # 處理前后多余的空格、換行等
            post_view_count = re.findall('\d+', count_list[i]) # 正則表達式獲取閱讀量數(shù)據(jù)
            
            single_post_info = [post_title, post_view_count[0]] # 單篇博文數(shù)據(jù)
            
            post_info.append(single_post_info)
        
        time.sleep(0.8)
        
    return post_info  

持久化模塊 store.py

import os
import time


def write_data(post_info, blog_name):
    """
        對數(shù)據(jù)進行持久化
    """
    
    print('開始寫入數(shù)據(jù)...')
    
    # 獲取時間
    now_time = time.localtime(time.time())
    select_date = time.strftime('%Y-%m-%d', now_time)
    select_time = time.strftime('%Y-%m-%d %H:%M:%S ', now_time)
    
    # 按日期創(chuàng)建文件路徑
    file_path = './{:s}/{:s}'.format(str(now_time.tm_year), str(now_time.tm_mon))
    
    try: 
        os.makedirs(file_path) # 該方法創(chuàng)建路徑時,若路徑存在會報異常,使用 try catch 跳過異常
    except OSError:
        pass
    
    # 寫入數(shù)據(jù)  
    try:
        fp = open('{:s}/{:s}.txt'.format(file_path, select_date), 'a+', encoding = 'utf-8')

        fp.write('閱讀量\t\t 博文題目\n')

        view_count = 0 # 總閱讀量
        for single_post_info in post_info:
            view_count += int(single_post_info[1])
            fp.write('{:<12s}{:s}\n'.format(single_post_info[1], single_post_info[0]))
        
        fp.write('------博客名:{:s} 博文數(shù)量:{:d} 總閱讀量:{:d} 統(tǒng)計時間:{:s}\n\n'.format(blog_name, len(post_info), view_count, select_time))
        
        # 關閉資源
        fp.close()
    except FileNotFoundError:
        print('無法打開指定的文件')
    except LookupError:
        print('指定編碼錯誤')
    except UnicodeDecodeError:
        print('讀取文件時解碼錯誤')

執(zhí)行結(jié)果

程序會在目錄下按日期創(chuàng)建文件夾

進入后可找到以日期命名的 txt 文件,以我自己的博客為例,得到以下統(tǒng)計信息:

可以將程序掛在服務器上,定時統(tǒng)計數(shù)據(jù),觀察閱讀量的漲幅。

到此這篇關于基于Python實現(xiàn)文章信息統(tǒng)計的小工具 的文章就介紹到這了,更多相關Python文章信息統(tǒng)計內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中使用threading.Event協(xié)調(diào)線程的運行詳解

    Python中使用threading.Event協(xié)調(diào)線程的運行詳解

    這篇文章主要介紹了Python中使用threading.Event協(xié)調(diào)線程的運行詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 解決python中文亂碼問題方法總結(jié)

    解決python中文亂碼問題方法總結(jié)

    這篇文章主要介紹了解決python中文亂碼問題方法總結(jié),需要的朋友可以參考下
    2021-05-05
  • Python從MySQL數(shù)據(jù)庫中面抽取試題,生成試卷

    Python從MySQL數(shù)據(jù)庫中面抽取試題,生成試卷

    這篇文章主要介紹了Python如何從MySQL數(shù)據(jù)庫中面抽取試題,生成試卷,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python matplotlib.pyplot.plot()參數(shù)用法

    python matplotlib.pyplot.plot()參數(shù)用法

    這篇文章主要介紹了python matplotlib.pyplot.plot()參數(shù)用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中的變量賦值

    Python中的變量賦值

    這篇文章主要介紹了Python中的變量賦值,Python中的變量在使用中很流暢,可以不關注類型,任意賦值,對于開發(fā)來說效率得到了提升,但不了解其中的機理,往往也會犯一些小錯,讓開發(fā)進行的不那么流暢,本文就從語言設計和底層原理的角度,帶大家理解Python中的變量。
    2021-10-10
  • Python?內(nèi)置函數(shù)sorted()的用法

    Python?內(nèi)置函數(shù)sorted()的用法

    這篇文章主要介紹了Python?內(nèi)置函數(shù)sorted()的用法,文章內(nèi)容介紹詳細具有一的參考價值,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-03-03
  • python讀取xml文件的實現(xiàn)方法

    python讀取xml文件的實現(xiàn)方法

    本文主要介紹了使用Python的xml.etree.ElementTree模塊讀取XML文件并提取其中的信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • Ubuntu16.04 安裝多個python版本的問題及解決方法

    Ubuntu16.04 安裝多個python版本的問題及解決方法

    Ubuntu16.04自帶python2.7與python3.5,Ubuntu 官方 apt 庫中還未收錄 python 3.8,因此添加 deadsnakes PPA 源安裝python3.8,否則會出現(xiàn)報錯,接下來通過本文給大家介紹Ubuntu16.04 安裝python的問題,一起看看吧
    2021-09-09
  • 利用python實現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式

    利用python實現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式

    今天小編就為大家分享一篇利用python實現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python實現(xiàn)跨年表白神器--你值得擁有

    python實現(xiàn)跨年表白神器--你值得擁有

    這篇文章主要介紹了python實現(xiàn)跨年表白神器的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-01-01

最新評論

钟山县| 红安县| 依兰县| 斗六市| 威远县| 陆良县| 彰化市| 巴彦县| 密山市| 霸州市| 宁河县| 西安市| 堆龙德庆县| 体育| 酉阳| 平果县| 天柱县| 库车县| 普定县| 丽江市| 赞皇县| 射阳县| 广西| 陕西省| 萨迦县| 墨脱县| 孟连| 乌鲁木齐县| 乌拉特中旗| 寿阳县| 房产| 建水县| 安乡县| 磐安县| 青海省| 大安市| 泰和县| 通化市| 宾阳县| 商水县| 镇雄县|