Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] quantidade variável de páginas

Olá! Fiquei com uma dúvida em relação ao código que itera entre as páginas:

repos_list = []
for page_num in range(1, 6):
    try:
        url_page = f'{url}?page={page_num}'
        response = requests.get(url_page, headers=headers)
        repos_list.append(response.json())
    except:
        repos_list.append(None)

Ok, da pra ver que ele passa da página 1 até a 5 do GitHub da Amazon, porém a gente já sabia previamente que tinham 5 páginas, e por isso definimos o limite do loop: in range(1, 6).

Como poderíamos fazer se esse número de páginas fosse desconhecido? algo do tipo: in range (1, lastPage). Tem como identificar esse valor de última página?

1 resposta
solução!

Bom dia! Dessa forma aqui você consegue avaliar quantas paginas existem.


import requests
import re

url = "https://api.github.com"
headers = {'User-Agent': 'amzn'}

repos_list = []
page_num = 1

while True:
    url_page = f'{url}?page={page_num}'
    response = requests.get(url_page, headers=headers)
    
    if response.status_code != 200:
        break  
    repos_list.append(response.json())
    
    link_header = response.headers.get('Link')
    if link_header:
        match = re.search(r'&page=(\d+)>; rel="last"', link_header)
        if match:
            last_page = int(match.group(1))
            if page_num >= last_page:
                break  
    
    page_num += 1

print(f'Total de páginas: {page_num - 1}')