Za pomocą tego można pobrać linię czasu użytkownika:

import pandas as pd
from stackapi import StackAPI
SITE = StackAPI('stackoverflow', key="please_add_your_key_here")
post = SITE.fetch('users/{ids}/timeline', ids=[5620], max_pages=10000000, page_size=100)

Widzę, że jest tylko 500 pozycji, ale spodziewam się, że będzie ich więcej.

Jak można pobrać wszystkie elementy do jednego wywołania interfejsu API?

0
Nathalie 19 grudzień 2019, 17:25
Nie jestem zaznajomiony z tym konkretnym API, ale inne API, z którymi pracowałem, pozwalają tylko na określoną liczbę wyników na żądanie. Często mają argument taki jak offset, więc możesz wyciągnąć 500 na raz, a następnie przesunąć je o 500 i wyciągnąć kolejne 500 itd. itd. Zalecam przeczytanie dokumentacji na temat tego interfejsu API, aby zobaczyć, jak to działa. Niektóre interfejsy API pozwalają tylko pobrać 500 najnowszych rekordów
 – 
DBA108642
19 grudzień 2019, 17:28
 – 
DeepSpace
19 grudzień 2019, 17:28
Dziękuję Ci. Użyłem maksymalnego i rozmiaru strony i pomyślałem, że może to przejść przez to. Jednak jak mogę iterować wszystkie wyniki, ponieważ nie znam maksymalnej liczby stron dla każdego użytkownika?
 – 
Nathalie
19 grudzień 2019, 17:37

1 odpowiedź

W jednym nie, ponieważ spowoduje to dodatkowe obciążenie bazy danych i zaplecza usługi. Możesz użyć paginacji, aby wyodrębnić wszystkie wymagane dane pozostawione w kursorze.

https://api.stackexchange.com/docs/paging

0
Alexandr Shurigin 19 grudzień 2019, 17:28
Użyłem maksymalnego i rozmiaru strony i pomyślałem, że może to przejść przez to. Jednak jak mogę iterować wszystkie wyniki, ponieważ nie znam maksymalnej liczby stron dla każdego użytkownika?
 – 
Nathalie
19 grudzień 2019, 17:45
Czy przeczytałeś dokument, który wysłałem? Istnieją linki do domyślnego opakowania, które zawiera wymagane pola api.stackexchange.com/docs/wrapper
 – 
Alexandr Shurigin
19 grudzień 2019, 17:55
Użyłem tej opcji post = SITE.fetch('users/{ids}/timeline', ids=[5620], has_more = 1, max_pages=10000000, page_size=100)
 – 
Nathalie
19 grudzień 2019, 19:00