Автоматизация повторяющихся задач с помощью Python!
Мотивация
Я увлекаюсь чтением китайских романов, мой любимый сайт для марафонского чтения - Wuxiaworld. Однако, когда я догоняю свои любимые романы, мне приходится постоянно проверять наличие обновлений, особенно для романов, которые я следую каждый день.
Так что я подумал, что вместо того, чтобы проверять это ежедневно, почему бы мне не написать простой скрипт, который будет обновлять меня, когда только появляются новые главы!
Стек технологий
Теперь, когда я решил создать такое программное обеспечение, пора подумать, что мне на самом деле нужно, чтобы это сделать.
- MongoDB для хранения пользователей и списков романов с обновлениями
- PyMongo для работы с MongoDB
- BeautifulSoup для парсинга новых обновлений
- Telegram для предоставления данных пользователям
Я выбрал MongoDB, потому что она легко настраивается и позволяет создавать дополнительные поля при необходимости. BeautifulSoup - очень популярный фреймворк, используемый для извлечения данных из файлов HTML и XML. Наконец, у меня есть опыт работы с Telegram Bots, поэтому я использовал Telegram для уведомления пользователей о наличии обновлений романов.
Генерация данных из HTML
Основным компонентом для работы является получение данных со веб-страницы, в данном случае - страницы последних обновлений Wuxiaworld, https://www.wuxiaworld.com/updates
Пожалуйста, ознакомьтесь с документацией BeautifulSoup о том, как использовать эту библиотеку. В методе populate_novels()
мы сделали следующее:
- Запросили весь HTML
- Список всех романов в виде массива из класса "table table-novels"
- Для каждого романа получили название, главу и URL
- Добавили информацию о романе в массив novels
- Вернули массив
После того, как я вернул список романов со всей информацией, я сохраняю его в MongoDB.
Когда коллекция не существует (что означает, что романы ранее не были заполнены, и скрипт запускается впервые), я вставляю романы в novels_collection. Вот почему я использовал MongoDB, это так просто!
Теперь, когда у меня есть исходная коллекция, давайте посмотрим, как мы можем заполнить обновленные романы в базу данных.
Этот класс работает в отдельном потоке и непрерывно запускает populate_novels()
для проверки обновлений каждые 60 секунд. Для каждого найденного романа он проверяет, являются ли URL одинаковыми, и если они разные, он обновляет базу данных с последней информацией.
Теперь все, что нам нужно сделать, это представить эту информацию пользователю через Telegram Bot. Я не буду подробно описывать, как его настроить, пожалуйста, обратитесь к официальной странице Telegram.
Ниже показано, как я настроил телеграм-бота для выполнения того, что я хотел сделать (показано ниже в серии фотографий). Не стесняйтесь использовать это и изменить поведение по своему усмотрению.
Заключение
Всего лишь несколькими строками кода мы можем автоматизировать рутинные задачи, чтобы мы могли сосредоточиться на других важных вещах. Это можно применить к любой веб-странице, которую вы постоянно проверяете, например, вашим заявкам на жилье или даже проверке последних новостей.
Если у вас есть вопросы, пожалуйста, дайте мне знать в комментариях. Как обычно, полный исходный код можно найти ниже:
Bilguun132/wuxiaworld_updater
You can't perform that action at this time. You signed in with another tab or window. You signed out in another tab or…
github.com