给定 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 字段。