Kodomo

Пользователь

ДЗ №11

Дедлайн: 16:40 пятница 05.12.2014.

Требования к оформлению обвычные (и, как обычно, сказываются на оценке только в диапазоне 7~10 баллов):

  • Файл с программой должен называться именно так, как указано в задании
  • Во всех программах должны быть содержательные имена переменных
  • Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
  • Функции должны сопровождаться docstring
  • Тело любой функции должно иметь длину не более 10 строк
  • Программа не должна содержать (в разумных пределах) дублирования кода
  • Вне функций должно быть не больше 10 строк кода, кроме объявления констант

  • В пределах программы порядок строк кода должен быть такой: импорты, константы, объявления функций и классов, вызов головной функции

В большинстве из этих заданий почти невозможно достигнуть точности 100%. Здесь невозможно всё делать идеально-штатными средствами, иногда приходится срезать углы. Нужно смотреть на данные и оценивать, какого качества они получились.

На этот раз задание нужно выполнить, воспользовавшись внешним краулером, например, wget или httrack.

Если вы вдобавок к основному решению выполняете ту же задачу, не выходя за рамки питона (например, с помощью пакета urllib), то тогда это решение вам засчитывается за прошлое задание.

  1. Создайте в репозитории папку hw11, и все программы этого задания сохраняйте в ней.

  2. (8 баллов) Напишите программу shakespear.py, которая скачивает все сонеты с сайта http://www.stihi-rus.ru/World/Shekspir/ . Программа создаёт для каждого сонета текстовый файл, содержащий про него данные: название, русский текст, английский текст, в таком формате:

    title:  Шекспир. Сонет 1
    russian:
    
    ...
    
    english:
    
    ...
  3. (9 баллов) Напишите программу stihi.py, которая скачивает весь текст с сайта stihi.ru . Программа должна уважать файл robots.txt. Программа оставляет от каждой страницы только название стихотворения (первая строка), имя автора (вторая строка), дату или копирайт (третья строка), и стихотворение (первая строка стихотворения оказывается пятой строкой в файле. Т.е. между стихотворением и метаданными есть одна пустая строка).

  4. (10 баллов) Напишите программу news-sources.py, которая скачивает с сайта newsru.com новости и для каждой новости все ссылки на внешние источники, которые в ней содержатся. Программа для каждой новости создаёт папку с именем, полученным из страницы новости заменой всех / на _. В папку программа сохраняет текст новости в файл news.txt (очищенный от всего, кроме новости), и в файлы, полученные из url заменой всех / на _, тексты всех внешних ссылок из новости, которые удалось добыть; тексты должны быть очищены от разметки. Программа должна учитывать robots.txt на всех сайтах.