python - 从用户的时间线中提取推文的功能是循环一个
问题描述
当我运行该函数时,该函数会返回大约 200 条推文,然后循环,直到达到用户实际拥有的推文总数。因此它将重复 200 条推文,直到达到该数量。
def extract_tweets(userid):
tweets = api.user_timeline(screen_name = userid,
count = 200,
include_rts = True,
tweet_mode = 'extended')
for info in tweets[:3]:
print('ID: {}'.format(info.id))
print(info.created_at)
print(info.full_text)
print('\n')
all_tweets = []
all_tweets.extend(tweets)
oldest_id = tweets[-1].id
tweet_num = api.get_user(userid).statuses_count
while len(all_tweets) < tweet_num:
tweets = api.user_timeline(screen_name = userid,
count = 200,
tweet_mode = 'extended')
if len(tweets) == 1000:
break
oldest_id = tweets[-1].id
all_tweets.extend(tweets)
outtweets = [[tweet.id_str,
tweet.created_at,
tweet.favorite_count,
tweet.retweet_count,
tweet.full_text.encode('utf-8').decode('utf-8')]
for idx, tweet in enumerate(all_tweets)]
df = DataFrame(outtweets, columns =['id', 'created_at', 'favorite_count', 'retweet_count', 'text'])
df.to_csv('%s_tweets.csv' % userid, index = False)
df.head(3)
解决方案
您的中断条件 (len(tweets) == 1000) 永远不会为真,因为最大推文返回数为 200。如果您想在收集所有用户推文时退出循环,则中断条件应为:
if len(tweets) == 0:
break
推荐阅读
- javafx - 如何省略缩放画布的像素化?
- sql - SQL 分组时间计算
- java - 在底部导航视图中,我如何在处理程序(1 分钟)运行之前显示不同的活动
- xamarin - Grail 的多个 Tiles ItemClickCommand 问题
- flutter - 颤振:通过 USB 安装应用程序时 webview 运行良好,但通过 google play 安装时运行良好
- javascript - 如何在 javascript 中缩放 SVG 路径
- c++ - 如何重载operator+=增加动态数组大小,最后添加一个对象
- python - 如何在课堂上修复 TypeError
- c# - spa页面刷新时的asp-action url不正确
- logging - 删除多个目录中某个日期之前的文件