如何通过Twitter API提取推文计数值并保存至文件?
如何从Twitter API的推文计数结果中提取仅推文计数值并保存到文件?
我正在开发一个通过Twitter API统计特定关键词每小时推文提及次数的程序,目前已实现数据输出功能,代码如下:
from operator import truediv from urllib import response import tweepy import config import datetime client = tweepy.Client(bearer_token=config.BEARER_TOKEN) query = 'Python' counts = client.get_recent_tweets_count(query=query, granularity='hour', start_time='2022-08-27T13:00:00+05:00', end_time='2022-08-27T14:00:00+05:00') for count in counts.data: print(count)
该代码会输出查询的起止时间及对应小时的推文计数,示例输出如下:
{'end': '2022-08-27T09:00:00.000Z', 'start': '2022-08-27T08:00:00.000Z', 'tweet_count': 2067}
但我希望仅提取推文计数值并保存到文件,请问该如何实现?
解决方案
1. 提取推文计数值
返回的count对象是字典结构,直接通过键名tweet_count即可提取对应数值:
tweet_count = count['tweet_count']
2. 保存到文件
下面提供两种实用的保存方式,根据你的需求选择:
方式一:仅保存纯计数值(逐行写入)
适合只需要数值的场景,每个时间段的计数占一行:
from operator import truediv from urllib import response import tweepy import config import datetime client = tweepy.Client(bearer_token=config.BEARER_TOKEN) query = 'Python' counts = client.get_recent_tweets_count(query=query, granularity='hour', start_time='2022-08-27T13:00:00+05:00', end_time='2022-08-27T14:00:00+05:00') # 打开文件,'w'表示覆盖写入,'a'表示追加写入 with open('tweet_counts.txt', 'w', encoding='utf-8') as f: for count in counts.data: tweet_count = count['tweet_count'] f.write(f"{tweet_count}\n") print(f"已保存计数:{tweet_count}")
方式二:保存为CSV格式(关联时间段)
如果需要保留时间段与计数的对应关系,CSV格式更便于后续数据分析:
from operator import truediv from urllib import response import tweepy import config import datetime import csv client = tweepy.Client(bearer_token=config.BEARER_TOKEN) query = 'Python' counts = client.get_recent_tweets_count(query=query, granularity='hour', start_time='2022-08-27T13:00:00+05:00', end_time='2022-08-27T14:00:00+05:00') with open('tweet_counts.csv', 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['开始时间', '结束时间', '推文计数'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() # 写入表头 for count in counts.data: writer.writerow({ '开始时间': count['start'], '结束时间': count['end'], '推文计数': count['tweet_count'] }) print("CSV文件已保存完成")
关键提示
- 使用
with open()语句会自动处理文件的打开与关闭,避免资源泄漏。 - 若未指定文件路径,文件会保存在当前脚本的运行目录下。
内容的提问来源于stack exchange,提问作者ClaytonTK
相关产品推荐
相关产品推荐

