Python solicita argumentos / trata con la paginación de la API

Estoy jugando con la API de la Lista de Ángeles (AL) y quiero sacar todos los trabajos en San San Francisco. Ya que no pude encontrar un envoltorio de Python activo para la API (si hago algún progreso, creo que me gustaría hacer el mío), estoy usando la biblioteca de solicitudes.

Los resultados de la API de AL están paginados, y no puedo averiguar cómo ir más allá de la primera página de los resultados.

Aquí está mi código:

import requests r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() r_sanfran.keys() # returns [u'per_page', u'last_page', u'total', u'jobs', u'page'] r_sanfran['last_page'] #returns 16 r_sanfran['page'] # returns 1 

Intenté agregar argumentos a requests.get , pero eso no funcionó. También intenté algo realmente tonto: cambiar el valor de la clave de ‘página’ de esa forma mágicamente iba a paginar por mí.

p.ej. r_sanfran['page'] = 2

Supongo que es algo relativamente simple, pero parece que no puedo resolverlo, por lo que cualquier ayuda sería increíble.

Gracias como siempre.

Documentación de la API de la lista de ángeles, si es útil.

Lea last_page y realice una solicitud de obtención para cada página del rango:

 import requests r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() num_pages = r_sanfran['last_page'] for page in range(2, num_pages + 1): r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs", params={'page': page}).json() print r_sanfran['page'] # TODO: extract the data 

Mejora en la respuesta de @alecxe: si usa un generador Python y una sesión HTTP de solicitudes, puede mejorar el rendimiento y el uso de recursos si está consultando muchas páginas o páginas muy grandes.

 import requests session = requests.Session() def get_jobs(): url = "https://api.angel.co/1/tags/1664/jobs" first_page = session.get(url).json() yield first_page num_pages = first_page['last_page'] for page in range(2, num_pages + 1): next_page = session.get(url, params={'page': page}).json() yield next_page['page'] for page in get_jobs(): # TODO: process the page