Файлы к уроку:
Описание
В этом уроке мы научимся импортировать таблицы в формате XML на примере данных с сайта Банка России.
Исходный XML код находится здесь. Мы преобразуем его в pandas DataFrame.

Решение
Сначала импортируем нужные модули.
import bs4
import requests
import pandas as pd
Создадим переменную, в которой будет храниться url и скачаем весь xml код страницы.
url = 'https://cbr.ru/scripts/XML_val.asp?d=0'
url_link = requests.get(url)
soup = bs4.BeautifulSoup(url_link.text, "lxml")
Сохраним каждый столбец таблицы в список.
names = soup.find_all('name')
engnames = soup.find_all('engname')
nominals = soup.find_all('nominal')
parentcodes = soup.find_all('parentcode')
Создадим список, в котором каждый элемент — это список со значениями одной строки.
currencies = []
for i in range(0, len(names)):
rows = [names[i].get_text(),
engnames[i].get_text(),
nominals[i].get_text(),
parentcodes[i].get_text()]
currencies.append(rows)
display(currencies[:3])
Преобразуем получившийся список в датафрейм.
valuta = pd.DataFrame(currencies,
columns=['Name', 'Engname', 'Nominal', 'Parentcode'],
dtype = float)
valuta[:3]
Примененные функции
- requests.get
- bs4.BeautifulSoup
- bs4.BeautifulSoup.find_all
- pandas.DataFrame
- list.append