给定 SO URL 如何获取特定问题及其答案和评论?
How can I fetch a specific question, its answers and comments given a SO URL?
我正在尝试使用 stackapi
Python 库从 URL 的列表中提取关于 SO 的具体问题。我一直在浏览文档和一些关于 Whosebug 上类似问题的答案。他们都说 API 只允许您在固定的开始和结束时间之间提出问题。 Post 你可以拉 answers/comments.
SITE = StackAPI('Whosebug')
questions = SITE.fetch('questions', fromdate=1457136000, todate=1457222400, min=20, tagged='python', sort='votes')
questions
{
'backoff': 0,
'has_more': False,
'items': [
{
u'accepted_answer_id': 35818398,
u'answer_count': 2,
u'creation_date': 1457186774,
u'is_answered': True,
u'last_activity_date': 1457246584,
u'last_edit_date': 1457200889,
u'link': u'
u'owner': {u'accept_rate': 80,
u'display_name': u'Finwood',
u'link': u'http://whosebug.com/users/1525423/finwood',
u'profile_image': u'https://i.stack.imgur.com/xkRry.png?s=128&g=1',
u'reputation': 1575,
u'user_id': 1525423,
u'user_type': u'registered'},
u'question_id': 35815093,
u'score': 22,
u'tags': [u'python', u'numpy', u'scipy', u'signal-processing'],
u'title': u'sine calculation orders of magnitude slower than cosine',
u'view_count': 404
}
],
'page': 1,
'quota_max': 300,
'quota_remaining': 171,
'total': 0
}
我看到另一种根据 ID 提取 badges/answers 的方法。有没有一种简单的方法可以从 URL 中获取问题的 ID?有没有办法直接或间接地获取单个问题、其评论和答案 (URL > ID > CONTENT)?
您不能仅在一个 API 调用中完成此操作。相反,您应该使用 /questions/{ids}
, /questions/{ids}/answers
and /questions/{ids}/comments
方法来实现您的目标。
它应该是这样的:
from stackapi import StackAPI
QUESTION_IDS = [4] # For example
SITENAME = 'Whosebug'
SITE = StackAPI(SITENAME)
question = SITE.fetch('questions/{ids}', ids=QUESTION_IDS, filter='withbody')
answers = SITE.fetch('questions/{ids}/answers', ids=QUESTION_IDS, filter='withbody')
comments = SITE.fetch('questions/{ids}/comments', ids=QUESTION_IDS, filter='withbody')
print(question, answers, comments)
其中 QUESTION_IDS
包含一个包含您收集的问题 ID 的数组。如果您无法找到哪个 answer/comment 属于哪个问题,请在返回的对象中查找 question_id
字段。
我正在尝试使用 stackapi
Python 库从 URL 的列表中提取关于 SO 的具体问题。我一直在浏览文档和一些关于 Whosebug 上类似问题的答案。他们都说 API 只允许您在固定的开始和结束时间之间提出问题。 Post 你可以拉 answers/comments.
SITE = StackAPI('Whosebug')
questions = SITE.fetch('questions', fromdate=1457136000, todate=1457222400, min=20, tagged='python', sort='votes')
questions
{
'backoff': 0,
'has_more': False,
'items': [
{
u'accepted_answer_id': 35818398,
u'answer_count': 2,
u'creation_date': 1457186774,
u'is_answered': True,
u'last_activity_date': 1457246584,
u'last_edit_date': 1457200889,
u'link': u'
u'owner': {u'accept_rate': 80,
u'display_name': u'Finwood',
u'link': u'http://whosebug.com/users/1525423/finwood',
u'profile_image': u'https://i.stack.imgur.com/xkRry.png?s=128&g=1',
u'reputation': 1575,
u'user_id': 1525423,
u'user_type': u'registered'},
u'question_id': 35815093,
u'score': 22,
u'tags': [u'python', u'numpy', u'scipy', u'signal-processing'],
u'title': u'sine calculation orders of magnitude slower than cosine',
u'view_count': 404
}
],
'page': 1,
'quota_max': 300,
'quota_remaining': 171,
'total': 0
}
我看到另一种根据 ID 提取 badges/answers 的方法。有没有一种简单的方法可以从 URL 中获取问题的 ID?有没有办法直接或间接地获取单个问题、其评论和答案 (URL > ID > CONTENT)?
您不能仅在一个 API 调用中完成此操作。相反,您应该使用 /questions/{ids}
, /questions/{ids}/answers
and /questions/{ids}/comments
方法来实现您的目标。
它应该是这样的:
from stackapi import StackAPI
QUESTION_IDS = [4] # For example
SITENAME = 'Whosebug'
SITE = StackAPI(SITENAME)
question = SITE.fetch('questions/{ids}', ids=QUESTION_IDS, filter='withbody')
answers = SITE.fetch('questions/{ids}/answers', ids=QUESTION_IDS, filter='withbody')
comments = SITE.fetch('questions/{ids}/comments', ids=QUESTION_IDS, filter='withbody')
print(question, answers, comments)
其中 QUESTION_IDS
包含一个包含您收集的问题 ID 的数组。如果您无法找到哪个 answer/comment 属于哪个问题,请在返回的对象中查找 question_id
字段。