fr0stn1k

dollar_stock_price

Dec 29th, 2020
1,082
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.04 KB | None | 0 0
  1. import requests # Модуль для обработки URL
  2. from bs4 import BeautifulSoup # Модуль для работы с HTML
  3. import time # Модуль для остановки программы
  4. import smtplib # Модуль для работы с почтой
  5.  
  6. # Основной класс
  7. class Currency:
  8.     # Ссылка на нужную страницу
  9.     DOLLAR_RUB = 'https://www.google.com/search?sxsrf=ALeKk01NWm6viYijAo3HXYOEQUyDEDtFEw%3A1584716087546&source=hp&ei=N9l0XtDXHs716QTcuaXoAg&q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+%D0%BA+%D1%80%D1%83%D0%B1%D0%BB%D1%8E&oq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80+&gs_l=psy-ab.3.0.35i39i70i258j0i131l4j0j0i131l4.3044.4178..5294...1.0..0.83.544.7......0....1..gws-wiz.......35i39.5QL6Ev1Kfk4'
  10.     # Заголовки для передачи вместе с URL
  11.     headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
  12.  
  13.     current_converted_price = 0
  14.     difference = 5 # Разница после которой будет отправлено сообщение на почту
  15.  
  16.     def __init__(self):
  17.         # Установка курса валюты при создании объекта
  18.         self.current_converted_price = float(self.get_currency_price().replace(",", "."))
  19.  
  20.     # Метод для получения курса валюты
  21.     def get_currency_price(self):
  22.         # Парсим всю страницу
  23.         full_page = requests.get(self.DOLLAR_RUB, headers=self.headers)
  24.  
  25.         # Разбираем через BeautifulSoup
  26.         soup = BeautifulSoup(full_page.content, 'html.parser')
  27.  
  28.         # Получаем нужное для нас значение и возвращаем его
  29.         convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
  30.         return convert[0].text
  31.  
  32.     # Проверка изменения валюты
  33.     def check_currency(self):
  34.         currency = float(self.get_currency_price().replace(",", "."))
  35.         if currency >= self.current_converted_price + self.difference:
  36.             print("Курс сильно вырос, может пора что-то делать?")
  37.             self.send_mail()
  38.         elif currency <= self.current_converted_price - self.difference:
  39.             print("Курс сильно упал, может пора что-то делать?")
  40.             self.send_mail()
  41.  
  42.         print("Сейчас курс: 1 доллар = " + str(currency))
  43.         time.sleep(3) # Засыпание программы на 3 секунды
  44.         self.check_currency()
  45.  
  46.     # Отправка почты через SMTP
  47.     def send_mail(self):
  48.         server = smtplib.SMTP('smtp.gmail.com', 587)
  49.         server.ehlo()
  50.         server.starttls()
  51.         server.ehlo()
  52.  
  53.         server.login('ВАША ПОЧТА', 'ПАРОЛЬ')
  54.  
  55.         subject = 'Currency mail'
  56.         body = 'Currency has been changed!'
  57.         message = f'Subject: {subject}\n{body}'
  58.  
  59.         server.sendmail(
  60.             'От кого',
  61.             'Кому',
  62.             message
  63.         )
  64.         server.quit()
  65.  
  66. # Создание объекта и вызов метода
  67. currency = Currency()
  68. currency.check_currency()
Advertisement
Add Comment
Please, Sign In to add comment