-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_tululu_category.py
90 lines (71 loc) · 2.61 KB
/
parse_tululu_category.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import argparse
import json
import logging
from pathlib import Path
from download_books import download_book_with_image
from parser import get_book_ids
logger = logging.getLogger(__file__)
MEDIA_FOLDER = 'media'
def createParser():
"""Создание парсера аргументов"""
parser = argparse.ArgumentParser(
description='Скачивание книг жанра научной фантастики')
parser.add_argument(
'--start_page',
help='С какого номера страницы начинать скачивание (по умолчанию - 1)',
type=int,
default=1)
parser.add_argument(
'--end_page',
help='По какую страницу скачивать (по умолчанию - 10)',
type=int,
default=10)
parser.add_argument(
'--dest_folder',
help='Путь к каталогу с результатами парсинга: '
'картинкам, книгам (по умолчанию - каталог скрипта)',
type=Path,
default=Path.cwd() / MEDIA_FOLDER)
parser.add_argument(
'--skip_imgs',
help='Не скачивать картинки',
action='store_true')
parser.add_argument(
'--skip_txt',
help='Не скачивать .txt-файлы',
action='store_true')
parser.add_argument(
'--json_path',
help='Путь к каталогу с *.json файлом с результатами'
'работы скрипта (по умолчанию - каталог скрипта)',
type=Path,
default=Path.cwd() / MEDIA_FOLDER)
return parser
def main():
logging.basicConfig(level=logging.ERROR)
logger.setLevel(logging.DEBUG)
parser = createParser()
params = parser.parse_args()
sci_fi_url = 'https://tululu.org/l55/'
book_ids = get_book_ids(
sci_fi_url,
params.start_page,
params.end_page)
downloaded_books = []
for book_id in book_ids:
book_metadata = download_book_with_image(
book_id=book_id,
dest_folder=params.dest_folder,
skip_imgs=params.skip_imgs,
skip_txt=params.skip_txt)
if book_metadata:
downloaded_books.append(book_metadata)
json_path = params.json_path / "books.json"
with open(json_path, "w", encoding="utf-8") as books_serialized:
json.dump(
downloaded_books,
books_serialized,
indent=4,
ensure_ascii=False)
if __name__ == '__main__':
main()