在requests.get中循环分页参数

时间:2018-02-17 13:57:49

标签: python for-loop pagination request

我想解决空缺。我的目标是解决一家公司的职位空缺

import requests
from tqdm import tqdm_notebook
import pandas as pd
r = requests.get('https://api.hh.ru/vacancies?employer_id=80').json() 
r

如果我这样做,我默认只有20个空缺(0页),但有488

'found': 488

'page': 0,
'pages': 25,
'per_page': 20

我可以制作循环

vac = []
for i in tqdm_notebook(range(0, 25)):
    vac.append(requests.get("https://api.hh.ru/vacancies?employer_id=80", params={'page': i}).json())

但我只有25个空缺(每页一个)。 或者我可以做到

vac = []
for j in tqdm_notebook(range(0, 20)):
    for i in tqdm_notebook(range(0, 500)):
        vac.append(requests.get("https://api.hh.ru/vacancies?employer_id=80", params={'page': i, 'per_page': j}).json())

但这是一种非常昂贵的方式,我们重复很多动作。如何解决?

1 个答案:

答案 0 :(得分:1)

您需要根据API documentation手动设置page和per_page参数。但是,per_page参数不需要循环 - 它应该是静态数字(20):

vac = []
for i in tqdm_notebook(range(0, 25)):
    vac.append(requests.get("https://api.hh.ru/vacancies?employer_id=80", params={'page': i, 'per_page':20}).json())

另外,请考虑根据分页结果的第一页使页面范围动态迭代。