如何通过 Stack Exchange API 获取特定用户的答案?



我想计算特定时间范围内某些特定用户的答案数量。不过,我找不到这些问题的答案。以下脚本不返回任何内容:

from stackapi import StackAPI
from pprint import pprint
user_list = [12153576, 11148139]
SITE = StackAPI('stackoverflow')
answers = SITE.fetch('answers',fromdate=1591488000, todate=1591747200)
user_ids = SITE.fetch("users/{ids}", ids=user_list)
for user in user_ids['items']:
for ans in answers['items']:
if user['user_id'] == ans['owner']['user_id']:
pprint(ans['owner']['display_name'])

但是,答案确实存在,例如:用户12153576的答案和用户11148139的答案。

您应该使用您提到的用户(又名users/{ids}/answers(的答案。将fromdate参数传递给请求后,应获取返回的items长度。

目前,Stack Exchange 存在一个错误,total将始终为 0。您可以使用len,而不是计数器和for循环,因为它们会使脚本效率低下。

from stackapi import StackAPI
user_list = [12153576, 11148139]
fromdate = 1591488000
SITE = StackAPI('stackoverflow')
answers = SITE.fetch('users/{ids}/answers', ids = user_list, fromdate = fromdate)
print(len(answers['items']))

想出了以下解决方案

from stackapi import StackAPI
from pprint import pprint
from datetime import datetime, timedelta
user_list = [12153576, 11148139]
fromdate=1591488000
cnt = 0    
SITE = StackAPI('stackoverflow')
answers = SITE.fetch('users/{ids}/answers', ids=user_list)
for ans in answers['items']:
if (ans['creation_date']) > fromdate:
cnt = cnt + 1
print("cnt:", cnt)

最新更新