Здравствуйте!
Сегодня я Вам расскажу про интересную библиотеку для Python под названием Pywebcopy.
PyWebCopy – бесплатный инструмент для копирования отдельных веб-страниц или же полного копирования сайта на жесткий диск.
Модуль обладает такими полезными методами как:
-
save_webpage() — для сохранения одной страницы;
-
save_website() — позволяет копировать сайт целиком.
Как предупреждают разработчики используйте save_website() аккуратно, т.к метод отправляет множество запросов, что может повлечь за собой значительную нагрузку на сервер.
Итак, не будем тянуть и приступим к коду. Сначала скачаем необходимые библиотеки:
pip install pywebcopy
pip install validators
Теперь приступаем к написанию скрипта. Для начала импортируем заранее установленные библиотеки:
from pywebcopy import save_webpage, save_website import validators
Теперь напишем блоки, которые будут скачивать весь веб-сайт или его отдельную страницу:
def webpage(url, folder, name): save_webpage( url=url, project_folder=folder, project_name=name, bypass_robots=True, debug=True, open_in_browser=True, delay=None, threaded=False, ) def website(url, folder, name): save_website( url=url, project_folder=folder, project_name=name, bypass_robots=True, debug=True, open_in_browser=True, delay=None, threaded=False, )
Блок webpage скачивает отдельную страницу сайта по ссылке url в папку folder и называет папку с сайтом name. Блок website скачивает весь сайт, а не его отдельную страницу.
Теперь напишем блок, который будет выводить текст красного цвета в терминал, для вывода ошибок.
def warning(text): print("\033[1m\033[31m{}\033[0m".format(text))
Теперь соединяем всё это вместе:
print("""Выберите цифру: 1 - Сохранить страницу 2 - Сохранить сайт""") b=False while b==False: try: a = int(input()) if a==1 or a==2: b=True else: warning("Выберите корректный номер!") except: warning("Только цифры!") c=False while c==False: url = input("Введите ссылку: ") if validators.url(url): c=True else: warning("Некорректная ссылка!") folder=input("Куда сохранять: ") name=input("Название проекта: ") if a==1: webpage(url, folder, name) else: website(url, folder, name)
В этом куске кода мы просим пользователя выбрать один из вариантов, или скачать весь сайт или только одну его страницу. Потом делаем проверку того, что пользователь ввел цифру, и что это число равно 1 либо 2. Потом с помощью библиотеки validators проверяем корректность введённой пользователем ссылки, если такая ссылка существует, то просим пользователя ввести путь к папке в которую будет сохранен сайт. А потом просим ввести название проекта. После чего, если все данные введены верно, то начинается закачка сайта на Ваш компьютер.
Ну вроде бы всё. Теперь Вы можете скачивать любой сайт к себе на компьютер. Но будьте окуратны с этим скриптом, так как если попытаться скачать весь сайт YouTube, то комп просто ляжет от огромного размера данных. Удачи!
Вот весь исходный код данного скрипта:
from pywebcopy import save_webpage, save_website import validators def warning(text): print("\033[1m\033[31m{}\033[0m".format(text)) def webpage(url, folder, name): save_webpage( url=url, project_folder=folder, project_name=name, bypass_robots=True, debug=True, open_in_browser=True, delay=None, threaded=False, ) def website(url, folder, name): save_website( url=url, project_folder=folder, project_name=name, bypass_robots=True, debug=True, open_in_browser=True, delay=None, threaded=False, ) print("""Выберите цифру: 1 - Сохранить страницу 2 - Сохранить сайт""") b=False while b==False: try: a = int(input()) if a==1 or a==2: b=True else: warning("Выберите корректный номер!") except: warning("Только цифры!") c=False while c==False: url = input("Введите ссылку: ") if validators.url(url): c=True else: warning("Некорректная ссылка!") folder=input("Куда сохранять: ") name=input("Название проекта: ") if a==1: webpage(url, folder, name) else: website(url, folder, name)
ссылка на оригинал статьи https://habr.com/ru/post/669766/
Добавить комментарий