Экспорт Избранного на Хабре в PDF. Версия 2.0
Доброго времени суток, хабражители!
Думаю, многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра». Такая же мысль посетила и меня чуть больше года назад.
Представляю вам новую версию программы закачки статей с Хабра, Гиктаймс и Мегамозг в формате PDF.
Новый проект называется HabraParse.
Проект состоит из библиотечки, которая парсит сайты, и скрипта, использующего лишь часть возможностей этой библиотеки. Скрипт написан на python3, для его работы потребуются модули docopt, requests и weasyprint (все их легко можно установить командой pip install name).
На текущий момент в скрипте имеются следующие возможности:
скачать статью по её ID; скачать список URL избранного для заданного пользователя; скачать статьи из избранного в папку в формате PDF или HTML (пока реализация HTML не на высоте, поэтому по умолчанию используется формат PDF, но он работает значительно дольше). Использование опций --gt/--mm позволяет сохранять статьи с GeekTimes.ru и Megamozg.ru.
Краткое описание параметров скрипта
Usage:
./habraparse.py save_favs_list [--gt|--mm]
save_favs_list — сохранение в файл
Технические подробности На самом деле Habraparse это, в первую очередь, библиотека для работы с информацией на сайтах Habrahabr.ru, GeekTimes.ru, MegaMozg.ru, позволяющая: получить информацию о профиле пользователя по его имени; получить из профиля пользователя: статьи, которые он написал и которые он добавил в свое «Избранное»; получить статью по номеру ID с её разбором. Название для библиотеки было выбрано крайне оригинальное — habr.Информация о пользователе представлена в классах HabraUser, GeektimesUser, MegamozgUser модуля habr.user и включает в себя:
полное имя и никнейм; дата регистрации; дата рождения; данные по карме (сама карма, количество голосов); рейтинг и место в рейтинге; страна, регион, город; количество фолловеров; количество постов; количество комментов; подписки на хабы, компании. Информация о статьях представлена в классах HabraTopic, MegamozgTopic, GeektimesTopic модуля habr.topic и включает в себя:
id статьи; заголовок; имя автора; рейтинг; текст статьи (текст статьи не преобразован, все ссылки на картинки и прочее не тронуты); комментарии: их количество и list с текстом комментариев; перечень хабов, в которых находится статья. Скрипт же использует библиотеку habr для парсинга и библиотеку weasyprint для генерации pdf. Weasyprint был выбран как самый простой по интерфейсу работы, и как единственный из попробованных, который смог сгенерировать нормальный PDF-файл. Однако, как оказалось, данная библиотека работает весьма медленно.Если вы знаете другие библиотеки генерации pdf, которые работают лучше — пишите в комменты или в личку. Однако сразу скажу, что разработка изначально велась под python3, поэтому не надо мне рассказывать про прекрасные pdf-библиотеки для python2.
На сим всё. Если кому понравилось, то пользуйтесь на здоровье! Если кто готов на базе этой библиотеки сделать свой скрипт с картами и женщинами, то всё в ваших руках!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.