Метод .find() в библиотеке bs4
Мне дан API ЦБ РФ (https://cbr.ru/scripts/XML_daily.asp?date_req=10.04.2023).
И мне нужно используя метод .find модуля BeautifulSoap4, зная лишь CharCode валюты, спарсить ее Value.
Я пытался делать это самостоятельно, но мой код выдает ответ None.
Код:
import requests
from bs4 import BeautifulSoup
from datetime import datetime
url = 'https://cbr.ru/scripts/XML_daily.asp?'
today = datetime.today()
today = today.strftime('%d/%m/%Y')
date = 'date_req'+today
response = requests.get(url+date)
payload = {
'date_req': today
}
response = requests.get(url, params=payload)
xml = BeautifulSoup(response.content, 'lxml')
def course(valute_from, valute_to, amount):
a = xml.find('valute', {'CharCode':valute_from })
print(a)
# valute_from = input('Введите код валюты, которую нужно конверитровать: ')
# valute_to = input('Введите код валюты, в которую вы будете конвертировать: ')
# amount = float(input('Введите сумму денег, которую необходимо конвертировать: '))
course('USD', 'EUR', 1)
Как можно исправить код?
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
import requests
from bs4 import BeautifulSoup
from datetime import datetime
today = datetime.today()
today = today.strftime('%d.%m.%Y')
response = requests.get(f'https://cbr.ru/scripts/XML_daily.asp?date_req={today}')
xml = BeautifulSoup(response.content, 'xml')
def course(valute_from):
# return xml.find(string=valute_from).parent.parent.Value.text
return xml.find(string=valute_from).find_next('Value').text
a = course('USD')
print(a)
# 82,3988
a = course('Таиландских батов')
print(a)
# 24,1807