CoderCastrov logo
CoderCastrov
Автоматизация

Автоматизация повторяющихся задач с помощью Python!

Автоматизация повторяющихся задач с помощью Python!
просмотров
3 мин чтение
#Автоматизация

Мотивация

Я увлекаюсь чтением китайских романов, мой любимый сайт для марафонского чтения - Wuxiaworld. Однако, когда я догоняю свои любимые романы, мне приходится постоянно проверять наличие обновлений, особенно для романов, которые я следую каждый день.

Так что я подумал, что вместо того, чтобы проверять это ежедневно, почему бы мне не написать простой скрипт, который будет обновлять меня, когда только появляются новые главы!

Стек технологий

Теперь, когда я решил создать такое программное обеспечение, пора подумать, что мне на самом деле нужно, чтобы это сделать.

  • MongoDB для хранения пользователей и списков романов с обновлениями
  • PyMongo для работы с MongoDB
  • BeautifulSoup для парсинга новых обновлений
  • Telegram для предоставления данных пользователям

Я выбрал MongoDB, потому что она легко настраивается и позволяет создавать дополнительные поля при необходимости. BeautifulSoup - очень популярный фреймворк, используемый для извлечения данных из файлов HTML и XML. Наконец, у меня есть опыт работы с Telegram Bots, поэтому я использовал Telegram для уведомления пользователей о наличии обновлений романов.

Генерация данных из HTML

Основным компонентом для работы является получение данных со веб-страницы, в данном случае - страницы последних обновлений Wuxiaworld, https://www.wuxiaworld.com/updates

All the updates are within class “table table-novels” Метод для получения всех романов и их обновлений

Пожалуйста, ознакомьтесь с документацией BeautifulSoup о том, как использовать эту библиотеку. В методе populate_novels() мы сделали следующее:

  • Запросили весь HTML
  • Список всех романов в виде массива из класса "table table-novels"
  • Для каждого романа получили название, главу и URL
  • Добавили информацию о романе в массив novels
  • Вернули массив

После того, как я вернул список романов со всей информацией, я сохраняю его в MongoDB.

Определение коллекций и подключение к 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