YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Russian subtitles

← Введение в Раздел 2 - CS101

Get Embed Code
9 Languages

Showing Revision 1 created 07/09/2013 by handfulofvoid.

  1. [Дэйв] С возвращением и добро пожаловать в раздел 2.
  2. Надеюсь, что все вы успешно закрепляете знания, полученные в разделе 1
  3. Мы продолжим углублять эти знания в данном и всех остальных разделах курса.
  4. Наша главная цель в этом разделе – заставить поискового робота отыскивать не одну ссылку,
  5. а все ссылки на веб-странице,
  6. чтобы следуя по этим ссылкам, отыскивать все больше и больше страниц в Сети.
  7. Для этого нам понадобятся две новые и очень важные концепции из области компьютерных наук.
  8. Первая из них – это процедуры. В них мы инкапсулируем код, чтобы облегчить его повторное использование.
  9. Вторая – это управление ходом выполнения программы. Чтобы отыскать все ссылки на странице, нам нужно уметь принимать решения и повторять инструкции.
  10. В конце раздела 1 мы продемонстрировали, как можно извлечь первый URL на веб-странице –
  11. и это здорово, мы смогли отыскать свою первую цель.
  12. Но если мы хотим создать хорошего робота,
  13. нам нужна не только первая,
  14. но и все остальные ссылки на странице.
  15. Нам нужно извлечь все эти ссылки
  16. и понять, куда они ведут,
  17. чтобы найти еще больше страниц для обработки, а не ограничиваться первой.
  18. Это и будет целью данного раздела, которая еще больше приблизит нас к созданию поисковой системы.
  19. Чтобы ее достичь, нам нужно будет усвоить две очень важные идеи из области компьютерных наук.
  20. Первая – это процедуры,
  21. удобный способ разделять код на модули с целью
  22. сделать его использование намного эффективнее.
  23. Вторая – это управление процессом выполнения программы.
  24. Управляющие конструкции позволят нам искать не одну,
  25. а все ссылки на странице.
  26. Итак, давайте вернемся к коду, написанному нами в конце раздела 1.
  27. Мы решили проблему извлечения первого URL из строки page,
  28. при условии, что в page содержится некая веб-страница.
  29. Здесь мы присвоили переменной start_link
  30. результат вызова метода find() строки page,
  31. передав в него позицию, с которой начинается ссылочный тег.
  32. Затем мы инициализировали переменную start_quote,
  33. присвоив ей результат поиска в строке page
  34. первой следующей за ссылочным тегом кавычки.
  35. Затем мы присвоили переменной end_quote
  36. результат вызова find() строки page,
  37. который дает нам позицию следующей кавычки.
  38. А затем мы присвоили переменной url
  39. подстроку из строки page, начинающуюся
  40. с символа, следующего сразу за позицией start_quote,
  41. и заканчивающуюся последним символом перед позицией end_quote.
  42. чтобы вывести этот URL на экран.
  43. Так мы смогли найти первый URL на странице.
  44. Если бы нам понадобилось найти второй,
  45. мы могли бы повторить все заново.
  46. Мы могли бы сказать: «Теперь нам нужно двигаться дальше,
  47. поэтому нам теперь нужен только остаток строки page».
  48. Мы могли бы получить его, присвоив переменной page
  49. ее собственный «хвост», начинающийся с позиции end_quote –
  50. и не забывайте, когда после двоеточия ничего нет,
  51. это означает выборку с данной позиции и до самого конца строки –
  52. и повторить процесс извлечения URL.
  53. Мы заново инициализируем start_link,
  54. а затем start_quote..
  55. Теперь наш код выводит первый найденный URL,
  56. продолжает выполняться, изменяя переменную page,
  57. и повторяет те же самые действия,
  58. чтобы вывести второй URL.
  59. Если бы нам нужно было вывести первые три URL-адреса,
  60. мы могли бы повторить все заново..
  61. Итак, теперь у нас есть код, который выводит первые три
  62. URL на веб-странице –
  63. отмотаем к самому началу и
  64. выведем первый URL и затем
  65. выведем второй URL и затем
  66. и так может продолжаться до бесконечности.
  67. Компьютеры существуют для того,
  68. чтобы освобождать людей от утомительной и нудной работы.
  69. Мы не хотим никого принуждать к утомительной работе,
  70. а повторный набор этого кода снова и снова
  71. наверняка утомит кого угодно,
  72. к тому же такой подход не очень-то эффективен.
  73. Бывает страницы с сотнями ссылок,
  74. а бывают и такие, на которых всего одна-две ссылки.
  75. Поэтому копировать этот код сотни раз бессмысленно.
  76. Всегда найдется страница, на которой найдется больше ссылок,
  77. чем у нас имеется копий этого кода,
  78. а страница, на которой ссылок меньше, вызовет проблемы,
  79. поскольку в ней коду негде будет искать все эти сотни ссылок.
  80. Итак, наша цель на сегодня – решить все эти проблемы.