微信视频号文章数据统计

微信视频号后台里有关于单篇文章的数据(见下图)。如果要做进一步的分析,可以将数据下载到本地。

微信视频号文章数据统计_第1张图片

from datetime import datetime
import math
import csv

def parse_date_time(date_time_str):
    # 将输入字符串解析为datetime对象
    date_time_obj = datetime.strptime(date_time_str, "%Y年%m月%d日 %H:%M")
    # 从datetime对象中提取日期和时间
    date = date_time_obj.date()
    time = date_time_obj.time()
    return date, time

def str2int(x):
    ''' 将字符串 x 中的万字转成数字 '''
    x1 = []
    for g in x:
        if '万' in g:
            g = g.replace('万', '')
            x1.append(int(float(g)*10000))
        else:
            x1.append(int(g))
    return x1    

def remove_extra_blank_lines(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    
    line_tmp = []
    
    for line in lines:
        if len(line.strip('\n')) > 0:
            line_tmp.append(line)

    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(line_tmp)
    
    extract_info_from(line_tmp)

def extract_info_from(line_tmp):
    contents = []
    update_times = []
    dates = []
    times = []
    views = []
    likes = []
    trans = []
    goods = []

    for i in range(0, len(line_tmp), 7):
        contents.append(line_tmp[i].replace('\n', ''))
        update_times.append(line_tmp[i+1].replace('\n', ''))
        views.append(line_tmp[i+2].replace('\n', ''))
        likes.append(line_tmp[i+3].replace('\n', ''))
        trans.append(line_tmp[i+4].replace('\n', ''))
        goods.append(line_tmp[i+5].replace('\n', ''))

    #dates, times = extract_dateinfo(update_times)
    times = [datetime.strptime(t, "%Y年%m月%d日 %H:%M") for t in update_times]
    views = str2int(views)
    likes = str2int(likes)
    trans = str2int(trans)
    goods = str2int(goods)

    print_rlt(times, views, likes, trans, goods)

    data = []
    for i in range(len(views)):
         data.append([contents[i], times[i], views[i], likes[i], trans[i], goods[i]])   
    
    save2csv(data)

def print_rlt(times, views, likes, trans, goods):
    print("自 %s 以来,微信视频号累计发布视频 %d 条。"%(min(times), len(views)))
    print("累计观看: %d \t 最多观看: %d \t 平均观看: %d"%(sum(views), max(views), (sum(views)/len(views))))
    print("累计喜欢: %d \t 最多喜欢: %d"%(sum(likes), max(likes)))
    print("累计转发: %d \t\t 最多转发: %d"%(sum(trans), max(trans)))
    print("累计点赞: %d \t 最多点赞:%d"%(sum(goods), max(goods)))

def extract_dateinfo(update_times):
    dates = []
    times = []
    for date_time in update_times:
        date, time = parse_date_time(date_time)
        dates.append(date)
        dates.append(time)
    return dates, times

def save2csv(data):
    with open('data.csv', mode='w', newline='') as file:
        writer = csv.writer(file)
        for row in data:
            writer.writerow(row)
    print("写入CSV文件完成。共 %d 条."%len(data))   

if __name__ == "__main__":
    # 测试函数
    file_path = 'data.txt'  
    remove_extra_blank_lines(file_path)

程序主要功能如下:

  1. parse_date_time(date_time_str)函数:将输入的日期时间字符串解析为datetime对象,并提取出日期和时间。

  2. str2int(x)函数:将字符串中的"万"字转换为数字,并将字符串中的数字转换为整数。

  3. remove_extra_blank_lines(file_path)函数:读取文件中的内容,去除多余的空行,并将处理后的内容写入文件。

  4. extract_info_from(line_tmp)函数:从处理后的文本内容中提取信息,包括视频内容、更新时间、观看次数、喜欢次数、转发次数和点赞次数。然后将这些信息整理成列表,并调用print_rlt()函数打印结果。最后将数据保存到CSV文件中。

  5. print_rlt(times, views, likes, trans, goods)函数:打印累计观看次数、最多观看次数、平均观看次数、累计喜欢次数、最多喜欢次数、累计转发次数、最多转发次数和累计点赞次数、最多点赞次数。

  6. extract_dateinfo(update_times)函数:从更新时间中提取日期和时间信息。

  7. save2csv(data)函数:将数据保存到CSV文件中。

主函数中,首先调用remove_extra_blank_lines(file_path)函数处理文件,然后提取信息并保存到CSV文件中。

微信视频号文章数据统计_第2张图片
功能简单,就是要对视频号的相关数据有个宏观了解。

你可能感兴趣的:(python)