微信视频号后台里有关于单篇文章的数据(见下图)。如果要做进一步的分析,可以将数据下载到本地。
from datetime import datetime
import math
import csvdef 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, timedef 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, timesdef 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文件中。
功能简单,就是要对视频号的相关数据有个宏观了解。