-
Title:
Введение в Раздел 2 - CS101
-
Description:
-
[Дэйв] С возвращением и добро пожаловать в раздел 2.
-
Надеюсь, что все вы успешно закрепляете знания, полученные в разделе 1
-
Мы продолжим углублять эти знания в данном и всех остальных разделах курса.
-
Наша главная цель в этом разделе – заставить поискового робота отыскивать не одну ссылку,
-
а все ссылки на веб-странице,
-
чтобы следуя по этим ссылкам, отыскивать все больше и больше страниц в Сети.
-
Для этого нам понадобятся две новые и очень важные концепции из области компьютерных наук.
-
Первая из них – это процедуры. В них мы инкапсулируем код, чтобы облегчить его повторное использование.
-
Вторая – это управление ходом выполнения программы. Чтобы отыскать все ссылки на странице, нам нужно уметь принимать решения и повторять инструкции.
-
В конце раздела 1 мы продемонстрировали, как можно извлечь первый URL на веб-странице –
-
и это здорово, мы смогли отыскать свою первую цель.
-
Но если мы хотим создать хорошего робота,
-
нам нужна не только первая,
-
но и все остальные ссылки на странице.
-
Нам нужно извлечь все эти ссылки
-
и понять, куда они ведут,
-
чтобы найти еще больше страниц для обработки, а не ограничиваться первой.
-
Это и будет целью данного раздела, которая еще больше приблизит нас к созданию поисковой системы.
-
Чтобы ее достичь, нам нужно будет усвоить две очень важные идеи из области компьютерных наук.
-
Первая – это процедуры,
-
удобный способ разделять код на модули с целью
-
сделать его использование намного эффективнее.
-
Вторая – это управление процессом выполнения программы.
-
Управляющие конструкции позволят нам искать не одну,
-
а все ссылки на странице.
-
Итак, давайте вернемся к коду, написанному нами в конце раздела 1.
-
Мы решили проблему извлечения первого URL из строки page,
-
при условии, что в page содержится некая веб-страница.
-
Здесь мы присвоили переменной start_link
-
результат вызова метода find() строки page,
-
передав в него позицию, с которой начинается ссылочный тег.
-
Затем мы инициализировали переменную start_quote,
-
присвоив ей результат поиска в строке page
-
первой следующей за ссылочным тегом кавычки.
-
Затем мы присвоили переменной end_quote
-
результат вызова find() строки page,
-
который дает нам позицию следующей кавычки.
-
А затем мы присвоили переменной url
-
подстроку из строки page, начинающуюся
-
с символа, следующего сразу за позицией start_quote,
-
и заканчивающуюся последним символом перед позицией end_quote.
-
чтобы вывести этот URL на экран.
-
Так мы смогли найти первый URL на странице.
-
Если бы нам понадобилось найти второй,
-
мы могли бы повторить все заново.
-
Мы могли бы сказать: «Теперь нам нужно двигаться дальше,
-
поэтому нам теперь нужен только остаток строки page».
-
Мы могли бы получить его, присвоив переменной page
-
ее собственный «хвост», начинающийся с позиции end_quote –
-
и не забывайте, когда после двоеточия ничего нет,
-
это означает выборку с данной позиции и до самого конца строки –
-
и повторить процесс извлечения URL.
-
Мы заново инициализируем start_link,
-
а затем start_quote..
-
Теперь наш код выводит первый найденный URL,
-
продолжает выполняться, изменяя переменную page,
-
и повторяет те же самые действия,
-
чтобы вывести второй URL.
-
Если бы нам нужно было вывести первые три URL-адреса,
-
мы могли бы повторить все заново..
-
Итак, теперь у нас есть код, который выводит первые три
-
URL на веб-странице –
-
отмотаем к самому началу и
-
выведем первый URL и затем
-
выведем второй URL и затем
-
и так может продолжаться до бесконечности.
-
Компьютеры существуют для того,
-
чтобы освобождать людей от утомительной и нудной работы.
-
Мы не хотим никого принуждать к утомительной работе,
-
а повторный набор этого кода снова и снова
-
наверняка утомит кого угодно,
-
к тому же такой подход не очень-то эффективен.
-
Бывает страницы с сотнями ссылок,
-
а бывают и такие, на которых всего одна-две ссылки.
-
Поэтому копировать этот код сотни раз бессмысленно.
-
Всегда найдется страница, на которой найдется больше ссылок,
-
чем у нас имеется копий этого кода,
-
а страница, на которой ссылок меньше, вызовет проблемы,
-
поскольку в ней коду негде будет искать все эти сотни ссылок.
-
Итак, наша цель на сегодня – решить все эти проблемы.