- 24
- 13
Всем привет, как-то мне нечего было делать и я решил сделать конвертер валюты, и причем зная что в питоне есть готовая библиотека для этого, но пошел трудным путем. Ну и короче решил спарсить сайт конвертер. Везде расставил комментарии, поэтому в теме расписывать каждую деталь не буду.
Изменено: Забыл сказать, модуль colorama не работает в стандартной консоли винды, он будет работать в эмуляторах консоли по типу ConEmu.
Вот код без coloram'ы:
Python:
# Данная хуйня просто пример работы с библиотеками requests, BeautifulSoup и colorama.
import requests # инициализируем библиотеки.
from bs4 import BeautifulSoup
from colorama import Back
i = 0 # переменная i, выступает у меня в качестве костыля, так как потом нам вернет два кода.
# Создаём массив заголовков (Тут вся информация о браузере и операционной системе, сделано для того,
# чтобы сайт не заблокировал запрос.)
HEADERS = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
'accept': '*/*'
}
# Спрашиваем у человека тип конвертера и количество валюты.
typeofhostcheck = input(Back.YELLOW + 'Введите тип конвертера валюты:\n1. usd > kzt. 2. usd > rub. 3. kzt > usd. 4. rub > usd. 5. kzt > rub. 6. rub > kzt. ')
valueofvalute = input(Back.YELLOW + 'Введите количество валюты: ')
# Настраиваем тип конвертера.
if typeofhostcheck == '1':
valutename = ' kzt'
HOST = 'https://pokur.su/usd/kzt/' + valueofvalute + '/'
elif typeofhostcheck == '2':
valutename = ' rub'
HOST = 'https://pokur.su/usd/rub/' + valueofvalute + '/'
elif typeofhostcheck == '3':
valutename = ' usd'
HOST = 'https://pokur.su/kzt/usd/' + valueofvalute + '/'
elif typeofhostcheck == '4':
valutename = ' usd'
HOST = 'https://pokur.su/rub/usd/' + valueofvalute + '/'
elif typeofhostcheck == '5':
valutename = ' rub'
HOST = 'https://pokur.su/kzt/rub/' + valueofvalute + '/'
elif typeofhostcheck == '6':
valutename = ' kzt'
HOST = 'https://pokur.su/rub/kzt/' + valueofvalute + '/'
else:
valutename = ' kzt'
print(Back.RED + 'Вы ввели неверный тип конвертера! Переключаю автоматически на: usd > kzt.')
HOST = 'https://pokur.su/usd/kzt/' + valueofvalute + '/'
# Функция get_html, которая запрашивает html код страницы, и принимает в качестве параметров
# url страницы и наши заголовки.
def get_html(url, HEADERS):
r = requests.get(url, headers=HEADERS).text # Запрашиваем html код страницы.
return r # Возращяем переменную r.
def get_content(html): # создаем функцию get_content, которая в качестве параметра принимает
# уже готовый html код страницы.
global i # добавляем в нашу функцию переменную i.
soup = BeautifulSoup(html, 'html.parser') # создаем переменную для работы с библиотекой
# BeautifulSoup.
# Во всем коде ищем тег div с классом input-group input-group-xlg-specific input__currency.
# Нам вернет массив.
items = soup.find_all('div', class_='input-group input-group-xlg-specific input__currency')
# Перебираем все элементы данного массива.
for item in items:
# Добавляем к i 1, чтобы в будующем пропустить первое значение, знаю что это можно
# Было сделать без костыля, но мне лень было искать как.
i += 1
if i == 2: # Если i равняется двум:
iteme = item.find('input', class_='form-control') # Ищем элемент input с классом
# form-control.
print() # Пропускаем одну строку.
# Оформлям с помощью модуля colorama и выводим результат.
print(Back.RED + 'Результат:' + Back.RESET + ' ' + Back.GREEN + str(iteme.get('value')) + Back.RED + valutename + '.')
get_content(get_html(HOST, HEADERS)) # Вызываем функцию get_content, которой передаем возращаемое значение
# функции get_html, помните, мы в функции get_html возвращали значение переменной r, так вот это оно и есть.
Изменено: Забыл сказать, модуль colorama не работает в стандартной консоли винды, он будет работать в эмуляторах консоли по типу ConEmu.
Вот код без coloram'ы:
Python:
import requests # инициализируем библиотеки.
from bs4 import BeautifulSoup
i = 0 # переменная i, выступает у меня в качестве костыля, так как потом нам вернет два кода.
# Создаём массив заголовков (Тут вся информация о браузере и операционной системе, сделано для того,
# чтобы сайт не заблокировал запрос.)
HEADERS = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
'accept': '*/*'
}
# Спрашиваем у человека тип конвертера и количество валюты.
typeofhostcheck = input('Введите тип конвертера валюты:\n1. usd > kzt. 2. usd > rub. 3. kzt > usd. 4. rub > usd. 5. kzt > rub. 6. rub > kzt. ')
valueofvalute = input('Введите количество валюты: ')
# Настраиваем тип конвертера.
if typeofhostcheck == '1':
valutename = ' kzt'
HOST = 'https://pokur.su/usd/kzt/' + valueofvalute + '/'
elif typeofhostcheck == '2':
valutename = ' rub'
HOST = 'https://pokur.su/usd/rub/' + valueofvalute + '/'
elif typeofhostcheck == '3':
valutename = ' usd'
HOST = 'https://pokur.su/kzt/usd/' + valueofvalute + '/'
elif typeofhostcheck == '4':
valutename = ' usd'
HOST = 'https://pokur.su/rub/usd/' + valueofvalute + '/'
elif typeofhostcheck == '5':
valutename = ' rub'
HOST = 'https://pokur.su/kzt/rub/' + valueofvalute + '/'
elif typeofhostcheck == '6':
valutename = ' kzt'
HOST = 'https://pokur.su/rub/kzt/' + valueofvalute + '/'
else:
valutename = ' kzt'
print('Вы ввели неверный тип конвертера! Переключаю автоматически на: usd > kzt.')
HOST = 'https://pokur.su/usd/kzt/' + valueofvalute + '/'
# Функция get_html, которая запрашивает html код страницы, и принимает в качестве параметров
# url страницы и наши заголовки.
def get_html(url, HEADERS):
r = requests.get(url, headers=HEADERS).text # Запрашиваем html код страницы.
return r # Возращяем переменную r.
def get_content(html): # создаем функцию get_content, которая в качестве параметра принимает
# уже готовый html код страницы.
global i # добавляем в нашу функцию переменную i.
soup = BeautifulSoup(html, 'html.parser') # создаем переменную для работы с библиотекой
# BeautifulSoup.
# Во всем коде ищем тег div с классом input-group input-group-xlg-specific input__currency.
# Нам вернет массив.
items = soup.find_all('div', class_='input-group input-group-xlg-specific input__currency')
# Перебираем все элементы данного массива.
for item in items:
# Добавляем к i 1, чтобы в будующем пропустить первое значение, знаю что это можно
# Было сделать без костыля, но мне лень было искать как.
i += 1
if i == 2: # Если i равняется двум:
iteme = item.find('input', class_='form-control') # Ищем элемент input с классом
# form-control.
print() # Пропускаем одну строку.
# Оформлям с помощью модуля colorama и выводим результат.
print('Результат: '+ str(iteme.get('value')) + valutename + '.')
get_content(get_html(HOST, HEADERS)) # Вызываем функцию get_content, которой передаем возращаемое значение
# функции get_html, помните, мы в функции get_html возвращали значение переменной r, так вот это оно и есть.
Вложения
Последнее редактирование: