Всем привет, как-то мне нечего было делать и я решил сделать конвертер валюты, и причем зная что в питоне есть готовая библиотека для этого, но пошел трудным путем. Ну и короче решил спарсить сайт конвертер. Везде расставил комментарии, поэтому в теме расписывать каждую деталь не буду.
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, так вот это оно и есть.
|