1
resposta

[Projeto] Exercicio Requests 2 -

Segue o código, Acabei analisando o que o Nilson montou, e fiz umas alterações. mas eu somente alterei a condição de parar o While True, usando o if not! espero ter ajudado.

# importação de biblioteca, e dados de acesso para a requisição
import requests

acess_token = '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'
headers = {'Authorization': 'Bearer' + acess_token,
           'X-GitHub-Api-Version': '2022-11-28'}

params = {'per_page': 100,}
api_base_url = 'https://api.github.com'
owner = 'amzn'
url = f'{api_base_url}/users/{owner}/followers'

# extração dos dados, laço while true

page = 1
followers_list = []

while True:
      url_page = f'{url}?page={page}'
      response = requests.get(url_page,headers=headers, params=params)
       
      if response.status_code != 200:
          print(f'Erro na requisição: {response.status_code} - {response.text}')

      followers = response.json()

      if not followers:
           print(f"Total pages = {page - 1}")
           break
                  
      followers_list.extend(followers)
      print(f"url => {url_page}")
      page += 1

# Saida do resultado
print(f"Total de seguidores coletados: {len(followers_list)}")
1 resposta

Oi, Rony! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de como você utilizou if not followers para controlar o while True. Essa abordagem torna o fluxo limpo e direto, além de evitar complexidade desnecessária ao verificar o fim da paginação.

Uma dica interessante para o futuro é explorar o método raise_for_status() da biblioteca requests, que lança uma exceção automaticamente em caso de erro HTTP. Veja este exemplo:


response = requests.get(url)
response.raise_for_status()

Esse comando evita a necessidade de checar o código de status manualmente e interrompe o programa caso algo dê errado.

Em caso de dúvidas, não hesite em retornar ao fórum!

Abraços!

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!