Как получить все вопросы, заданные конкретным пользователем c из Stack Exchange API? - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь получить все вопросы с подробной информацией из API Stack Exchange для данного идентификатора пользователя, используя следующий код:

response = requests.get("http://api.stackexchange.com/2.2/users/2593236/questions?")

Однако я получаю это сообщение об ошибке.

{"error_id":400,"error_message":"site is required","error_name":"bad_parameter"}

Может ли кто-нибудь помочь мне с этой проблемой и получить все заданные пользователем вопросы по их идентификатору?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Чтобы загрузить все вопросы или ответы от определенного пользователя c и стека, вы можете использовать:

import requests, traceback, json

all_items = []
user = 2593236
stack = "stackoverflow.com"
qa = "questions" # or answers

page = 1
while 1:
    u = f"https://api.stackexchange.com/2.2/users/{user}/{qa}?site={stack}&page={page}&pagesize=100"
    j = requests.get(u).json()
    if j:

        all_items += j["items"]

        if not j['has_more']:
            print("No more Pages")
            break
        elif not j['quota_remaining']:
            print("No Quota Remaining ")
            break
    else:
        print("No Questions")
        break

    page+=1


if all_items:
    print(f"How many {qa}? ", len(all_items))
    # save questions/answers to file
    with open(f"{user}_{qa}_{stack}.json", "w") as f:
        f.write(json.dumps(all_items))

Демо

0 голосов
/ 25 апреля 2020

Сообщение об ошибке довольно ясно: вы должны включить параметр site, как описано в документации :

Каждый из этих методов работает на одном сайте во время, определяемое параметром site. Этот параметр может быть полным доменным именем (ie. "Stackoverflow.com") или краткой формой, обозначенной api_site_parameter на объекте сайта.

Попробуйте

http://api.stackexchange.com/2.2/users/2593236/questions?site=stackoverflow.com
...