Portuguese, Brazilian subtitles

← 02-52 Print All Links

02-52 print_all_links

Get Embed Code
9 Languages

Showing Revision 1 created 07/08/2013 by Lucilia Figueiredo.

  1. Então, agora modificamos o procedimento get_next_target,
  2. e ele retorna None como primeira saída, se não existe o próximo alvo.
  3. Caso contrário, ele retorna a url e end_quote.
  4. E agora, tudo o que temos a fazer é descobrir como repetir.
  5. Vamos dar uma no que fizemos antes.
  6. Nós convertemos essas 4 linhas em um procedimento,
  7. e então, agora, ao inv;es de termos todo esse código,
  8. vamos chamar get_next_target,
  9. e atribuir os resultados.
  10. Agora temos o valor da url, que temos que imprimir --
  11. então ainda vamos imprimir isso, como anteriormente.
  12. E ainda queremos atualizar o valor de page,
  13. mas agora não queremos usar end_quote.
  14. O que queremos usar é o valor que foi retornado aqui,
  15. que é atribuído à variável endpos.
  16. E então, bem, vamos fazer isso tudo de novo.
  17. Então, todo esse código aqui é simplesmente outra chamada a get_next_target,
  18. e, de modo similar, isso seria endpos, aon invés de end_quote.
  19. E nós queremos repetir até que cheguemos ao final.
  20. Então, como vamos decidir se chegamos ao final?
  21. Bem, nós chegamos ao final quando a url
  22. que é retornada é None.
  23. E quando a chamada a get_next_target retorna None para a url,
  24. sabemos que terminamos.
  25. Nós já vimos uma maneira de fazer repetição -- é com um while loop.
  26. Já vimos como fazer um teste.
  27. Queremos testar a url.
  28. A temos tudo o que precisamos agora, para imprimir todos os links da página.
  29. Eu vou dar para você o início de como escrever este procedimento,
  30. e então você vai terminá-lo.
  31. O que vamos definir é um procedimento
  32. que irá imprimir todos os links da página.
  33. Ele recebe a página como entrada, e então queremos usar um while loop para fazer a repetição,
  34. e eu vou deixar em branco a condição de teste do while loop.
  35. Eu vou deixar isso para você descobrir.
  36. No corpo do while loop, o que vamos fazer é chamar get_next_target,
  37. atribuindo o resultado a url e endpos.
  38. Isso é exatamente como fizemos no código exemplo.
  39. Agora, o que precisamos fazer é varificar se obtivemos uma url válida --
  40. então, o que estávamos fazendo aqui
  41. era supor que sempre obtínhamos uma url válida
  42. e nós a imprimíamos, e continuávamos a repetir. Mas precisamos fazer alguma coisa para testar
  43. se a url que obtivemos é None.
  44. É isso que vamos fazer.
  45. Temos: if url -- se isso é True -- isso significa que encontramos uma url válida.
  46. Não obtivemos o valor None como resultado de get_next_target,
  47. e portanto queremos imprimir isso, como fazíamos antes.
  48. Vamos imprimir a url, e vamos avançar na página,
  49. para a próxima posição.
  50. Se não obtivemos uma url válida,
  51. isso significa que get_next_target não encontrou um link.
  52. Não havia mais links na página,
  53. e temos que fazer alguma outra coisa, e eu vou deixar isso em branco --
  54. o que precisamos fazer aqui.
  55. Então, isso é tudo o que precisamos para o código de print_all_links.
  56. Deixamos 2 partes para você fazer neste teste.
  57. Veja se você é capaz de descobrir qual deve ser a condição do teste do while
  58. e o que deve vir no bloco do else.
  59. E, se você fizer certo, você poderá imprimir todos os links da página.