为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Stack Exchange API 获取答案的正文?

如何使用 Stack Exchange API 获取答案的正文?

翻阅古今 2021-09-14 21:26:56
我正在使用StackAPI来获得投票最多的问题和这些问题的投票最多的答案:-from stackapi import StackAPISITE = StackAPI('stackoverflow')SITE.max_pages=1SITE.page_size=10questions = SITE.fetch('questions', min=20, tagged='python', sort='votes')for quest in questions['items']:    if 'title' not in quest or quest['is_answered'] == False:        continue    title = quest['title']    print('Question :- {0}'.format(title))    question_id = quest['question_id']    print('Question ID :- {0}'.format(question_id))    top_answer = SITE.fetch('questions/' + str(question_id) + '/answers', order = 'desc', sort='votes')    print('Most Voted Answer ID :- {0}'.format(top_answer['items'][0]['answer_id']))现在使用这个answer_id我想得到那个答案的正文。我可以通过使用此 API 链接获取其余详细信息。
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您需要使用自定义过滤器来获取问题/答案/帖子正文。


好消息是,您还可以使用自定义过滤器在获取问题的同时获取答案数据——无需再调用 API。


例如,如果您/questions使用过滤器调用路由:

    !*SU8CGYZitCB.D*(BDVIficKj7nFMLLDij64nVID)N9aK3GmR9kT4IzT*5iO_1y3iZ)6W.G*


你得到的结果如下:


"items": [ {

    "tags": ["python", "iterator", "generator", "yield", "coroutine"],

    "answers": [ {

        "owner": {"user_id": 8458, "display_name": "Douglas Mayle"},

        "is_accepted": false,

        "score": 248,

        "creation_date": 1224800643,

        "answer_id": 231778,

        "body": "<p><code>yield</code> is just like <code>return</code> - it returns what..."

        }, {

        "owner": {"user_id": 22656, "display_name": "Jon Skeet"},

        "is_accepted": false,

        "score": 139,

        "creation_date": 1224800766,

        "answer_id": 231788,

        "body": "<p>It's returning a generator. I'm not particularly familiar with Python, ..."

        }, {

        ...

    } ],

    "owner": {"user_id": 18300, "display_name": "Alex. S."},

    "is_answered": true,

    "accepted_answer_id": 231855,

    "answer_count": 40,

    "score": 8742,

    "creation_date": 1224800471,

    "question_id": 231767,

    "title": "What does the &quot;yield&quot; keyword do?"

    },

    ...

所以,改变这个:


questions = SITE.fetch('questions', min=20, tagged='python', sort='votes')

对于这样的事情:


questions = SITE.fetch('questions', min=20, tagged='python', sort='votes', filter='!*SU8CGYZitCB.D*(BDVIficKj7nFMLLDij64nVID)N9aK3GmR9kT4IzT*5iO_1y3iZ)6W.G*')

然后相应地调整你的for循环。


查看完整回答
反对 回复 2021-09-14
  • 1 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号