使用 Python 请求进行游标分页



我正在寻找一些可管理的方法来处理使用 Python 中的请求库的分页。我希望我的_request方法能够处理单页和无限页请求。

这是我_request方法:

def _request(self, url, params={}, headers={}):
if self.app_access_token:
headers["Authorization"] = f"Bearer {self.app_access_token}"
headers["Client-ID"] = self.client_id
try:
response = requests.get(url, params=params, headers=headers)
response_json = response.json()
except Exception as e:
print(f"Error during _request: {e}")
if response.status_code == 429:
self._authenticate_application()
self._request(url, params=params, headers=headers)
if "cursor" in response_json["pagination"]:
params["after"] = response_json["pagination"]["cursor"]
return data

下面是一个游标示例:

...
],
"pagination": {
"cursor": "eyJiIjp7Ik9mZnNldCI6MH0sImEiOnsiT2Zmc2V0Ijo0MH19"
}

我最初的想法是在密钥cursor存在的情况下,使用after参数提出另一个请求(当没有更多页面时,pagination将不包含cursor(,但这只够 2 页。

有哪些方法可以保留原始请求中的数据以继续发出请求,直到没有更多页面然后返回数据?

您的代码中似乎有解决方案。如果响应代码为 429,则重新调用self._request方法。您可以对分页执行相同的操作并生成数据。

def _request(self, url, params={}, headers={}):
...
if "cursor" in response_json["pagination"]:
params["after"] = response_json["pagination"]["cursor"]
self._request(url, params=params, headers=headers)

最新更新