Файлы к уроку:
Ссылки:
Описание
Сначала с главной страницы «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
Курс Python Практический
Номер урока | Урок | Описание |
---|---|---|
1 | Python Практический. Скачиваем котировки | В этом уроке мы научимся скачивать котировки с помощью модуля pandas_datareader. |
2 | Python Практический. Объединить книги Excel | В этом уроке мы объединим много Excel файлов в один CSV файл с помощью Python |
3 | Python Практический. Объединить книги Excel | Дополним урок по объединению большого количества XLSX файлов в один CSV при помощи Python. Добавим Progress Bar и вывод времени начала обработки каждого файла. |
4 | Python Практический. Создать Progress Bar | В этом уроке мы научимся создавать Progress Bar в Python. Для этого воспользуемся модулем tqdm. |
5 | Python Практический. Объединить листы книги Excel | Объединим множество листов одной книги Excel по вертикали. |
6 | Python Практический. Объединить книги Excel и листы в них | Как объединить книги Excel и все листы в них в одну таблицу. |
7 | Python Практический. Объединить множество CSV | Объединим множество CSV файлов по вертикали в один CSV файл. |
8 | Python Практический. Таблицы из множества интернет-страниц | Извлечем таблицу из множества веб-страниц и объединим по вертикали. |
9 | Python Практический. Многостраничное извлечение таблиц с Requests и BS4 | В этом уроке мы с помощью Python модулей Requests и BS4 извлечем таблицу из множества web-страниц, потом все эти таблицы объединим по вертикали в одну и запишем результат в Excel файл. |
10 | Python Практический. Скрапинг/Парсинг сайтов с Selenium и BS4 | В этом уроке мы будем скрапить/парсить веб сайт с Python модулями Selenium и BF4. |
11 | Python Практический. Автоматизация браузера Python Selenium, Скрапинг, скачивание выписок ЕГРЮЛ | В этом уроке мы познакомимся с модулем Selenium для Python. Он позволяет автоматизировать работу браузера, например, открывать веб-страницы, заполнять формы, получать содержимое блоков и скачивать файлы. Мы изучим основы Selenium на примере получения данных ЕГРЮЛ по ИНН и автоматическому скачиванию выписок ЕГРЮЛ. |
12 | Python Практический. Множественная замена текста с Pandas | В этом уроке мы выполним множественную замена текста с помощью модуля Pandas |