Subtitles translated from Russian
Showing Revision 1 created 11/19/2013 by natasha.nikityuk.
-
Title:
02-52 Виводимо усі посилання
-
Description:
-
Отже, ми модифікували нашу процедуру getnexttarget(),
-
і тепер вона повертає None у якості першого результату, якщо у вхідному рядку немає посилання.
-
В протилежному випадку вона поверне URL та позицію закриваючої лапки.
-
І тепер нам залишилось збагнути, як повторити її виклик.
-
Подивимось на те, що ми зробили раніше.
-
ми перетворили ці 4 рядки кода у нашу процедуру,
-
і тепер ми можемо замість того, щоб писати весь цей код,
-
просто викликати getnexttarget()
-
та розмістити її результати в змінні.
-
Тепер у нас є значення URL, яке ми виводимо на екран,
-
мо продовжимо виводити його, як і раніше.
-
І нам все ще треба змінювати значення page,
-
але тепер ми не будемо використовувати для цього end_quote.
-
Замість нього ми використовуємо це повертне значення,
-
яке ми просвоїли змінній endpos.
-
І потім все повторюється знов.
-
Замість всього цього коду ми робимо ще один виклик getnexttarget(),
-
і знов використовуємо endpos замість end_quote.
-
І нам необхідно викликати процедуру, доки ми не дійдемо до кінця сторінки,
-
проте як ми дізнаємось, що дійши до кінця?
-
Ну, ми розуміємо що дістались кінця, коли
-
замість URL повертається None.
-
І коли виклик getnexttarget() повертає None замість URL,
-
ми розуміємо, що закінчили.
-
Ми вже знайшли спосіб повторювати один і той самий код - while-цикл.
-
Ми дізнались, як виконувати перевірку умови,
-
щоб перевіряти URL.
-
І тепер ми знаємо все необхідне для того, аби вивести всі посилання на веб-сторінці.
-
Я покажу вам, як почати писати цю процедуру,
-
а ви завершите її.
-
Ми визначимо процедуру,
-
яка виводить всі посилання на сторінці,
-
приймаючи на вхід рядок page; тому ми будемо використовувати у ній while-цикл,
-
і я залишу порожньою умову while-циклу.
-
Її вам треба буде вписати самостійно.
-
В тілі while-циклу ми будемо викликати getnexttarget(),
-
присвоюючи результати виклику змінних url та endpos.
-
Те ж саме ми робили у нашому прикладі.
-
Тепер нам необхідно перевірити правильність отриманого URL,
-
раніше ми завжди
-
вважали, що отримуємо коректний URL,
-
виводили його на екран та продовжували виконувати код, але тепер нам необхідно перевіряти,
-
чи рівний повертний URL значенню None.
-
Цим ми й займемося.
-
У нас є умова if url, та якщо вона істинна, ми знайшли коректний URL.
-
Тобто ми не отримали значення None у результаті виклику getnexttarget(),
-
і значить, нам необхідно вивести його на екран, як і раніше.
-
Ми виводимо URL, та врізуємо уміст page,
-
прибираючи всі символи до endpos.
-
Якщо ми не отримауємо коректний URL,
-
це значить, що getnexttarget() не знайшла посилання.
-
Тобто на сторінці більше не залишилось посилань,
-
і нам необхідно зробити щось інше, але замість цього "щось"
-
я залишу прочерк.
-
Отже, це все, що нам необхідно для процедури printalllinks() [вивести усі посилання].
-
Щоб виконати це завдання, вам необхідно буде заповнити два пропуски.
-
подивимось, чи зможете ви зрозуміти, якою повинна бути умова while-циклу
-
та вміст else-блоку.
-
Та якщо ваша здогадка виявиться правильною, ви зможете вивести усі посилання на веб-сторінці.