ДЗ №11
Дедлайн: 16:40 пятница 05.12.2014.
Требования к оформлению обвычные (и, как обычно, сказываются на оценке только в диапазоне 7~10 баллов):
- Файл с программой должен называться именно так, как указано в задании
- Во всех программах должны быть содержательные имена переменных
- Во всех программах не должно быть строк длиннее 75 символов, а если такие строки возникли, части таких строк нужно выносить в отдельные переменные или функции.
- Функции должны сопровождаться docstring
- Тело любой функции должно иметь длину не более 10 строк
- Программа не должна содержать (в разумных пределах) дублирования кода
Вне функций должно быть не больше 10 строк кода, кроме объявления констант
В пределах программы порядок строк кода должен быть такой: импорты, константы, объявления функций и классов, вызов головной функции
В большинстве из этих заданий почти невозможно достигнуть точности 100%. Здесь невозможно всё делать идеально-штатными средствами, иногда приходится срезать углы. Нужно смотреть на данные и оценивать, какого качества они получились.
На этот раз задание нужно выполнить, воспользовавшись внешним краулером, например, wget или httrack.
Если вы вдобавок к основному решению выполняете ту же задачу, не выходя за рамки питона (например, с помощью пакета urllib), то тогда это решение вам засчитывается за прошлое задание.
Создайте в репозитории папку hw11, и все программы этого задания сохраняйте в ней.
(8 баллов) Напишите программу shakespear.py, которая скачивает все сонеты с сайта http://www.stihi-rus.ru/World/Shekspir/ . Программа создаёт для каждого сонета текстовый файл, содержащий про него данные: название, русский текст, английский текст, в таком формате:
title: Шекспир. Сонет 1 russian: ... english: ...
(9 баллов) Напишите программу stihi.py, которая скачивает весь текст с сайта stihi.ru . Программа должна уважать файл robots.txt. Программа оставляет от каждой страницы только название стихотворения (первая строка), имя автора (вторая строка), дату или копирайт (третья строка), и стихотворение (первая строка стихотворения оказывается пятой строкой в файле. Т.е. между стихотворением и метаданными есть одна пустая строка).
(10 баллов) Напишите программу news-sources.py, которая скачивает с сайта newsru.com новости и для каждой новости все ссылки на внешние источники, которые в ней содержатся. Программа для каждой новости создаёт папку с именем, полученным из страницы новости заменой всех / на _. В папку программа сохраняет текст новости в файл news.txt (очищенный от всего, кроме новости), и в файлы, полученные из url заменой всех / на _, тексты всех внешних ссылок из новости, которые удалось добыть; тексты должны быть очищены от разметки. Программа должна учитывать robots.txt на всех сайтах.