Как на Python написать скрипт для автоматического парсинга таблицы из веб-страницы и её экспорта в CSV (библиотека pandas)?

Для автоматического парсинга таблицы из веб-страницы и её экспорта в CSV на Python удобнее всего использовать связку библиотек **pandas** и **requests** (или **BeautifulSoup**). Pandas имеет встроенный метод `read_html()`, который автоматически находит все HTML-таблицы (`

`) на странице и возвращает список DataFrame.

## Шаг 1. Установка зависимостей

Перед началом установите необходимые библиотеки:

pip install pandas requests lxml

Библиотека `lxml` нужна pandas как парсер HTML.

## Шаг 2. Написание скрипта

python
import pandas as pd
import requests

# URL страницы с таблицей
url = «https://example.com/table-page»

# Загружаем HTML-контент страницы
headers = {«User-Agent»: «Mozilla/5.0»}
response = requests.get(url, headers=headers)
response.raise_for_status() # Проверка на ошибки HTTP

# Парсим все таблицы со страницы
tables = pd.read_html(response.text)

# Берём первую таблицу (индекс 0)
df = tables[0]

# Экспортируем в CSV
df.to_csv(«output.csv», index=False, encoding=»utf-8-sig»)

print(«Таблица успешно сохранена в output.csv»)
print(df.head())

## Пояснения к коду

— `requests.get()` — загружает HTML-код страницы. Заголовок `User-Agent` помогает избежать блокировок.
— `pd.read_html(response.text)` — возвращает **список** всех найденных таблиц. Если таблица одна, берём `tables[0]`.
— `to_csv()` с параметром `encoding=»utf-8-sig»` обеспечивает корректное отображение кириллицы в Excel.
— `index=False` — исключает автоматический числовой индекс из CSV.

## Пример строки в CSV

Если таблица содержит данные о товарах, итоговый CSV будет выглядеть так:

Название,Цена,Количество,Категория
Ноутбук Lenovo,45990,12,Электроника

## Дополнительные возможности

— Если на странице несколько таблиц, перебирайте `tables` в цикле: `for i, df in enumerate(tables): df.to_csv(f»table_{i}.csv»)`.
— Для динамических страниц (JavaScript-рендеринг) используйте **Selenium** или **Playwright** вместо requests.
— Метод `read_html()` принимает также прямой URL: `pd.read_html(url)` — но без кастомных заголовков.

Таким образом, весь процесс парсинга и экспорта занимает менее 15 строк кода.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.