Файлы к уроку:
Ссылки:
Описание
В этом уроке мы извлечем однотипные таблицы из множества таблиц одного веб-сайта и объединим их в одну таблицу по вертикали.
Решение
Импортируем нужные модули.
# Импорт модулей
import os
import requests
import bs4
import pandas as pd
from tqdm import tqdm
import time
Укажем рабочую папку.
# Указываем рабочую папку
os.chdir(r'c:\Comrade Excel. Многостраничное извлечение')
os.getcwd()
Создадим список url, из которых будем извлекать таблицы.
# Создаем список url
url = 'http://novosibirsky--nsk.sudrf.ru/modules.php?name=sud_delo&srv_num=1&name_op=r&page={}&vnkod=54RS0030&srv_num=1&name_op=r&delo_id=1540005&case_type=0&new=0&G1_PARTS__NAMESS=&g1_case__CASE_NUMBERSS=&g1_case__JUDICIAL_UIDSS=&delo_table=g1_case&g1_case__ENTRY_DATE1D=01.01.2014&g1_case__ENTRY_DATE2D=31.12.2019&G1_CASE__JUDGE=&g1_case__RESULT_DATE1D=&g1_case__RESULT_DATE2D=&G1_CASE__RESULT=&G1_CASE__BUILDING_ID=&G1_CASE__COURT_STRUCT=&G1_EVENT__EVENT_NAME=&G1_EVENT__EVENT_DATEDD=&G1_PARTS__PARTS_TYPE=&G1_PARTS__INN_STRSS=&G1_PARTS__KPP_STRSS=&G1_PARTS__OGRN_STRSS=&G1_PARTS__OGRNIP_STRSS=&G1_RKN_ACCESS_RESTRICTION__RKN_REASON=&g1_rkn_access_restriction__RKN_RESTRICT_URLSS=&G1_DOCUMENT__PUBL_DATE1D=&G1_DOCUMENT__PUBL_DATE2D=&G1_CASE__VALIDITY_DATE1D=&G1_CASE__VALIDITY_DATE2D=&G1_ORDER_INFO__ORDER_DATE1D=&G1_ORDER_INFO__ORDER_DATE2D=&G1_ORDER_INFO__ORDER_NUMSS=&G1_ORDER_INFO__STATE_ID=&list=ON&Submit=%CD%E0%E9%F2%E8'
urls = []
for item in range(1, 666):
urls.append(url.format(int(item)))
urls[-1]
Передадим параметры headers.
# Передаем браузеру параметры headers
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 YaBrowser/20.9.0.933 Yowser/2.5 Safari/537.36'}
Объединим таблицы в одну большую таблицу.
# Объединяем все в одну таблицу
court_cases = pd.DataFrame()
i = 0
for url in tqdm(urls):
i = i + 1
attempts = 0
while attempts < 100:
try:
time.sleep(1)
source = requests.get(url, headers=headers, timeout=600).text
soup = bs4.BeautifulSoup(source, 'lxml')
table = soup.select_one('#tablcont')
table = pd.read_html(str(table))
table = pd.DataFrame(table[0])
table['Page_Number'] = i
court_cases = pd.concat([court_cases, table])
break
except:
continue
Запишем результат в XLSX.
# Запишем результат в XLSX
court_cases.to_excel('court_cases.xlsx')
Примененные функции
- os.chdir
- os.getcwd
- range
- list.append
- pandas.DataFrame
- tqdm.tqdm
- time.sleep
- requests.get
- bs4.BeautifulSoup
- bs4.BeautifulSoup.select_one
- pandas.read_html
- str
- pandas.concat
- 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 |