Как сохранить таблицу с сайта в CSV-файл
CSV-файл — это простой текст, который может прочитать любая программа для работы с таблицами и базами данных. Перенести веб-таблицу в такой формат нетрудно; сложно сделать это без кракозябр вместо букв, неверного разделителя или пропавших нулей. Вот четыре способа и подводные камни каждого из них.
1. Скопировать, вставить в Excel, затем сохранить как
Выделите таблицу, скопируйте её, вставьте в пустой лист Excel, затем воспользуйтесь командой сохранения в меню «Файл» и выберите тип файла CSV UTF-8.
Подходит для: небольшой таблицы, которая нужна один раз, когда у вас уже открыт Excel.
Где не работает: если выбрать обычный тип CSV вместо CSV UTF-8, все символы вне вашей кодировки Windows (ударения, кириллица, китайские иероглифы) превратятся в вопросительные знаки. Кроме того, Excel записывает разделитель, заданный в региональных настройках Windows, поэтому на многих европейских компьютерах ваш файл с «разделителями-запятыми» на самом деле разделяется точкой с запятой, а программа для чтения может ожидать запятые. При вставке также могут пропасть ведущие нули (код вроде 01234 превращается в 1234), значения вроде 1-2 могут превратиться в даты, а выделение может прихватить лишний текст вокруг таблицы.
2. Google Таблицы: вставить и скачать
Вставьте таблицу в файл Google Таблицы, затем откройте меню «Файл», пункт «Скачать» и выберите формат «Значения, разделенные запятыми (.csv)».
Подходит для: любого компьютера с браузером, Excel не нужен, а файл всегда сохраняется в кодировке UTF-8.
Где не работает: в файле всегда используются запятые, из-за чего Excel в регионах с десятичной запятой может не разбить данные по столбцам при двойном клике. Скачивается только тот лист, который вы просматриваете, а не весь файл. Как и Excel, Таблицы при вставке могут превратить некоторые значения в даты или числа.
3. Python: pandas.read_html
Если вы уже пишете на Python, библиотека pandas умеет считывать все таблицы на странице и сохранять одну из них в CSV:
pandas.read_html("https://example.com/page")[0].to_csv("table.csv", index=False)
Число в скобках — это порядковый номер таблицы на странице (0 для первой). Вам понадобятся установленные pandas и lxml.
Подходит для: обработки одной и той же страницы каждую неделю или сотен страниц с помощью скрипта.
Где не работает: некоторые сайты отвечают на запрос ошибкой 403, так как обращение не похоже на браузер, поэтому приходится скачивать страницу самостоятельно и передавать HTML в pandas. Инструмент не видит страницы за авторизацией или таблицы, которые подгружает JavaScript. Сноски вроде [1] остаются в заголовках и значениях, а целые числа могут превратиться в 8021407192.0, если в каком-то ряду столбца окажется пустая ячейка.
4. Расширение для браузера: один клик на нужной странице
Расширение работает прямо со страницей в вашем браузере, поэтому оно справляется и после входа в аккаунт, и с таблицами на JavaScript. Мы создали такое расширение — Ordelio Копия таблиц (бесплатно, без ограничений по строкам):
- Откройте страницу и нажмите на значок расширения (или нажмите Alt+Shift+Y). Появится список всех таблиц на странице, начиная с самой большой; при наведении на таблицу она подсвечивается.
- Нажмите CSV: браузер сохранит файл с этой таблицей. Буквы не испортятся, так как файл сохраняется в UTF-8 со специальной меткой для Excel, а разделителем ставится точка с запятой, если в вашем языке в дробях используется запятая (в настройках можно принудительно выбрать запятую, точку с запятой или табуляцию).
Инструмент также удаляет сноски вроде [1], дублирует объединенные ячейки, чтобы столбцы не смещались, и записывает коды вроде 01234 в файл точно так же, как они выглядят на странице (открывающая файл программа всё же может превратить их в числа).
Где не работает: сохраняется то, что отображается на странице в данный момент, поэтому для таблиц, разбитых на несколько страниц, потребуется по файлу на каждую страницу, а сам файл не обновляется автоматически, в отличие от скрипта.
Установить Ordelio Копия таблиц для Microsoft Edge Версии для Chrome и Firefox находятся на проверке.
Что выбрать
| Сохранить как в Excel | Google Таблицы | pandas | Расширение | |
|---|---|---|---|---|
| Страницы за входом в аккаунт | Да (через копирование) | Да (через копирование) | Нет | Да |
| Буквы и символы не портятся | Только с CSV UTF-8 | Да | Да | Да |
| Настраиваемый разделитель | Нет (задается Windows) | Нет (всегда запятые) | Да (параметр) | Да (настройка) |
| Сотни страниц за один раз | Нет | Нет | Да | Нет |
| Время на одну новую страницу | Около минуты | Около минуты | Минуты в первый раз | Пара секунд |
Кратко: для скрипта, который запускается каждую неделю на публичных страницах, используйте pandas. Для разового сохранения со страницы, которую вы читаете (особенно под авторизацией), берите данные прямо со страницы.
Нашли таблицу, с которой не справился ни один из способов? Расскажите нам, мы читаем каждое сообщение.