微信视频号后台里有关于单篇文章的数据(见下图)。如果要做进一步的分析,可以将数据下载到本地。
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)
程序主要功能如下:
parse_date_time(date_time_str)
函数:将输入的日期时间字符串解析为datetime对象,并提取出日期和时间。
str2int(x)
函数:将字符串中的"万"字转换为数字,并将字符串中的数字转换为整数。
remove_extra_blank_lines(file_path)
函数:读取文件中的内容,去除多余的空行,并将处理后的内容写入文件。
extract_info_from(line_tmp)
函数:从处理后的文本内容中提取信息,包括视频内容、更新时间、观看次数、喜欢次数、转发次数和点赞次数。然后将这些信息整理成列表,并调用print_rlt()
函数打印结果。最后将数据保存到CSV文件中。
print_rlt(times, views, likes, trans, goods)
函数:打印累计观看次数、最多观看次数、平均观看次数、累计喜欢次数、最多喜欢次数、累计转发次数、最多转发次数和累计点赞次数、最多点赞次数。
extract_dateinfo(update_times)
函数:从更新时间中提取日期和时间信息。
save2csv(data)
函数:将数据保存到CSV文件中。
主函数中,首先调用remove_extra_blank_lines(file_path)
函数处理文件,然后提取信息并保存到CSV文件中。