Skip to content

pszhuchkov/books-library

Repository files navigation

Парсер книг с сайта tululu.org

Скрипты предназначены для загрузки книг в формате .txt с сайта https://tululu.org и навигации по загруженным данным с использованием локальной версии веб-сайта.

Демо-версия сайта

О скриптах

parse_tululu.py - выполняет сохранение всех доступных текстовых файлов книг и их обложек в указанном диапазоне идентификаторов книг (позиционные аргументы).
parse_tululu_category.py - выполняет сохранение всех доступных текстовых файлов книг и их обложек в указанном диапазоне страниц (аргументы --start_page и --start_page). По умолчанию сохраняются книги из коллекции фантастика.

render_website.py - скрипт для запуска локальной версии сайта с загруженными данными.
helpers.py - вспомогательный скрипт.
constants.py - содержит переменные с постоянными значениями (конфигурационный файл).

Как установить

Для работы программы должен быть установлен Python 3.
Для установки зависимостей запустить команду:

pip install -r requirements.txt

Аргументы

parse_tululu.py
При запуске программы требуется указать 2 позиционных аргумента:start_id и end_id. Программа скачивает все доступные книги в указанном диапазоне идентификаторов книг.
start_id - начальный идентификатор диапазона книг на сайте (по умолчанию 0);
end_id - конечный идентификатор диапазона книг на сайте (по умолчанию 0);

Пример запуска программы:

python parse_tululu.py 20 30

В данном примере будут загружены все доступные книги с идентификаторами с 20 по 30 включительно.

parse_tululu_category.py
При запуске программы требуется указать 2 именованных аргумента: --start_page и --end_page. Программа скачивает все доступные книги в указанном диапазоне идентификаторов страниц. Без указания параметров будут сохранены все книги, находящиеся на первой странице.
--start_page - начальный идентификатор диапазона страниц коллекции (по умолчанию 1);
--end_page - конечный идентификатор диапазона страниц коллекции;

Примеры запуска программы:

python parse_tululu_category.py --start_page 10 --end_page 20

В данном примере будут загружены все доступные книги, находящийся на страницах с идентификаторами с 1 по 5 включительно.

python parse_tululu_category.py --end_page 7

В данном примере будут загружены все доступные книги, находящийся на страницах с идентификаторами с 1 по 7 включительно.

python parse_tululu_category.py --start_page 10

В данном примере будут загружены все доступные книги, находящийся на страницах с идентификаторами с 10 по последнюю включительно.

Общие аргументы

--books_dirname - наименование каталога для текстовых файлов книг (по умолчанию books)
--images_dirname - наименование каталога для обложек книг (по умолчанию images)
--dest_dir - путь к каталогу, в который будут сохраняться все файлы
--skip_img - не скачивать обложки книг
--skip_txt - не скачивать текстовые файлы книг
--json_path - путь к файлу с результатами
--collection_url - ссылка на страницу коллекции (по умолчанию фантастика)

Запуск веб-сайта

Для запуска локальной версии веб-сайта требуется после загрузки необходимых данных выполнить команду:

python render_website.py

По умолчанию для получения информации о загруженных книгах используется файл downloaded_books.json, расположенный в директории проекта. Для указания иного файла необходимо указать параметр --json_path:

python render_website.py --json_path test.json

Внимание! Для корректной работы локальной версии веб-сайта необходимо, чтобы файл с информацией о загруженных книгах содержал ссылки на текстовые файлы книг и их обложки (данные должны быть загружены без использования параметров --skip_img и --skip_txt).
По умолчанию на одной веб-странице размещаются 20 книг, разделенные на 2 столбца. Доступ к страницам сайта осуществляется по следующему адресу: http://127.0.0.1:5500/pages/index{номер страницы}.html

Демо-версия сайта

img.png

Цель проекта

Код написан в образовательных целях на онлайн-курсе для веб-разработчиков dvmn.org.

About

Программа для загрузки книг с tululu.org.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published