Файлы к уроку:
Ссылки:
Описание
В этом уроке мы спарсим данные с сайта с помощью Selenium. Selenium нужен, чтобы автоматизировать браузер.
Таблица, которую мы будем извлекать находится здесь. Ее не получится извлечь простым способом, потому что url таблицы не меняется при переходе на другие страницы.
Решение
Импортируем нужные модули, функции и укажем рабочую папку.
# Импортировать модуль и указать папку
import os
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
os.chdir(r'c:\Download')
os.getcwd()
Запускаем драйвер и открываем url.
# Запускаем драйвер, открываем веб-страницу
browser = webdriver.Firefox()
browser.get('https://subsidies.qoldau.kz/ru/subsidies/recipients?Year=2020')
Получаем ссылки для переключения страниц.
# Все ссылки на все страницы
pages = browser.find_elements_by_tag_name('div.btn-group ul li')
Получаем текст этих ссылок и записываем его в список.
# Список страниц
pg_list = []
for page in pages:
try:
pg_list.append(int(page.text))
except:
continue
Создаем пустой датафрейм, извлекаем таблицу с каждой страницы с помощью Selenium и записываем в созданный датафрейм.
# Создаем датафрейм и записываем туда все таблицы
table = pd.DataFrame()
for pg in range(min(pg_list),max(pg_list)+1):
pg_link = browser.find_element_by_link_text(str(pg))
pg_link.click()
html=browser.page_source
soup=BeautifulSoup(html,'html.parser')
elem = soup.select_one('table.sw-table-content')
content = pd.read_html(str(elem))
content = pd.DataFrame(content[0])
content.columns = ['Номер', 'Наименование', 'Сумма', 'Полученные субсидии']
table = pd.concat([table, content])
time.sleep(2)
Запишем получившийся результат в XLSX.
# Записываем результат в XLSX
table.to_excel('Получатели субсидий.xlsx')
Примененные функции
- os.chdir
- os.getcwd
- bs4.BeautifulSoup
- list.append
- pandas.DataFrame
- bs4.BeautifulSoup.select_one
- pandas.read_html
- pandas.concat
- time.sleep
- pandas.DataFrame.to_excel
Курс 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 |