Файлы к уроку:
Описание
Сначала с главной страницы «https://bigmacindex.ru» мы извлечем все ссылки, которые ведут на страницы с нужными нам таблицами.
После этого с каждого url извлечем нужную таблицу, а потом все таблицы объединим по вертикали в одну большую.
Решение
Импортируем нужные модули.
# Импорт модулей
import pandas as pd
import requests
import bs4
import datetime as dt
Сохраним путь в переменную.
# Сохраним путь в переменную
url = 'https://bigmacindex.ru'
Скачаем весь код веб-страницы.
# Скачать код
html_txt = requests.get(url).text
Передадим код модулю bs4.
# Передаем код модулю bs4
soup = bs4.BeautifulSoup(html_txt, 'lxml')
Создадим список ссылок на веб-страницы, с которых будем извлекать таблицы.
# Создаем список ссылок
a_tags = soup.select('.fancy')
urls = ['http://bigmacindex.ru' + a_tag['href'] for a_tag in a_tags]
Создадим пустой датафрейм и запишем все полученные таблицы в него.
# Создаем пустой датафрейм и записываем в него все таблицы
full_table = pd.DataFrame()
for url in urls:
html_txt = requests.get(url).text
soup = bs4.BeautifulSoup(html_txt, 'lxml')
table_tag = soup.select_one('table.is-narrow')
pd_table = pd.read_html(str(table_tag))[0]
pd_table['date'] = url.rsplit('/')[-1]
pd_table['date'] = pd.to_datetime(pd_table['date'])
full_table = full_table.append(pd_table)
Запишем результат в файл xlsx.
# Запись в Excel
with pd.ExcelWriter('big_mac.xlsx',
date_format='DD.MM.YYYY') as writer:
full_table.to_excel(writer,
sheet_name='big mac idx',
index=False)
Примененные функции
- requests.get
- bs4.BeautifulSoup
- bs4.BeautifulSoup.select
- pandas.DataFrame
- pandas.DataFrame.to_excel
- bs4.BeautifulSoup.select_one
- pandas.read_html
- pandas.to_datetime
- pandas.DataFrame.append
- pandas.ExcelWriter