TL;DR
- Веб-таблица становится удобной для использования в формате CSV или JSON только после проверки значений её строк и столбцов.
- Crawl получает отрендеренный HTML таблицы; ваш парсер превращает проверенные ячейки в записи CSV или JSON.
- Отклоняйте или явно обрабатывайте объединенные ячейки, вложенные заголовки, единицы измерения и постраничный вывод перед экспортом.
- Скриншот полезен, когда видимая сетка и возвращённый HTML не совпадают.
- Nstdata Crawl обрабатывает рендеринг JavaScript и маршрутизацию через прокси в управляемых запросах; его документация перечисляет шесть категорий вывода: Markdown, HTML, сырые данные, PDF, скриншоты и ссылки.
Что значит «скрейпить» таблицу сайта?
Скрейпинг таблицы означает преобразование визуальной или HTML-сетки в записи со стабильными значениями столбцов. Многие простые таблицы используют <table>, <tr>, <th> и <td>, но настоящие страницы могут использовать объединённые ячейки, вложенные заголовки или сетки на основе div. CSV требует прямоугольной формы строки; JSON может сохранять вложенные или необязательные поля. Ни один из форматов не является корректным, пока не будут интерпретированы единицы измерения, иерархия заголовков и отсутствующие значения.
Nstdata Crawl может преобразовать URL или ограниченный набор связанных страниц в материал для AI-агента, RAG индекса или конвейера данных. Используйте свои собственные правила полей и процедуры принятия решений для конкретного результата: извлеките разрешённую таблицу, сохраните её заголовки и экспортируйте проверенные строки в формате CSV или JSON. Полное руководство по сканированию сайтов Nstdata объясняет возможность выполнения задания на уровне сайта.
Для более узкой задачи, рассмотренной здесь, руководство Nstdata website-to-JSON даёт полезный контекст для выбора первой представительной страницы.
Что вам нужно перед тем, как начать?
Выберите авторизованную страницу таблицы и определите её заголовок, ожидаемые названия столбцов, единицы измерения и как минимум две известные строки. Решите, как обрабатывать rowspan, colspan, пустые ячейки, сноски и ссылки внутри ячеек. Если таблица фактически является сеткой div, подготовьте парсер, специфичный для шаблона, вместо того, чтобы заставлять библиотеку HTML-таблиц угадывать. Сохраняйте исходный URL и время получения вместе с экспортируемым файлом.
Документация Crawl API использует https://api.nstdata.io, заголовок x-api-key и Content-Type: application/json. Подготовьте эти поля перед запуском метода:
| Поле | Что предоставить |
|---|---|
url | Один разрешённый URL страницы или входного сайта на HTTPS |
formats | Запрашиваемые выходные данные, такие как ["markdown"] или ["html","screenshot"] |
onlyMainContent | true только если выбор основного содержания соответствует задаче |
maxDepth, maxPages | Явные пределы для задания по всему сайту |
includeUrls, excludeUrls | Шаблоны URL, которые сохраняют поиск в пределах области |
timeout | Тайм-аут задачи в миллисекундах, если по умолчанию он не подходит |
Стандартный управляемый запрос не имеет отдельных полей для прокси-хоста, порта, имени пользователя, пароля или протокола. Проверьте текущую страницу с ценами Crawl для получения информации о лимитах аккаунта и сборах перед выполнением крупной задачи.
Просмотрите политику доступа и область целевой страницы. Протокол исключения роботов определяет, как краулеры читают правила для роботов; он не предоставляет прав на использование содержимого. Убедитесь, что учётные данные и личные данные не попадают в примеры и диагностические логи.
Руководство Nstdata по динамическим веб-сайтам является дополнением для определения проверок принятия решения перед тем, как вы автоматизируете рабочий процесс.
Как HTML-таблицы становятся CSV или JSON?
Nstdata Crawl может рендерить JavaScript и возвращать очищенный HTML или сырые данные страницы. Его API не гарантирует завершённый экспорт таблицы CSV в видимой документации. Используйте Crawl, чтобы получить нужное состояние страницы, затем парсите проверенную таблицу в вашем собственном коде. Встроенная маршрутизация через прокси устраняет необходимость вводить отдельные учётные данные прокси в стандартный запрос Crawl. Сохраните скриншот, когда видимая таблица и возвращённый HTML не совпадают.
Для известного URL одностраничный скрейпинг извлекает один результат. Для раздела сайта POST /api/v1/crawl рекурсивно находит связанные страницы в пределах заданной глубины, количества страниц и правил URL. Документация документация перечисляет Markdown, HTML, сырые данные, PDF, скриншоты и ссылки в качестве шести категорий вывода; на странице продукта также представлено JSON, но схемы JSON, специфичные для домена, все же требуют явного сопоставления полей. Сохраняйте каждую принятую запись, связанную с её исходным URL и возвращённой метаданными.
Тестируйте страницу с большой нагрузкой на JavaScript перед масштабированием. Рендеринг может зависеть от времени, региона, согласия или авторизованной сессии. Сравните возвращенный HTML или скриншот с ожидаемым состоянием страницы; если они отличаются, отрегулируйте только задокументированные параметры рендеринга и ожидания.
Как скрапировать таблицу с веб-сайта в CSV или JSON?
Сначала проверьте фактическую структуру таблицы, получите сгенерированный HTML, а затем нормализуйте ячейки в записи. Этап парсинга является частью рабочего процесса, так как Crawl не документирует окончательную точку CSV-таблицы.
Метод 1: Проверьте таблицу в Crawl Playground
Лучше всего подходит для понимания, существует ли таблица в рендеренном DOM.
Шаг 1: Откройте целевую страницу
Перейдите в Dashboard → Crawl Playground и введите разрешенный URL таблицы. [Скриншот: целевой URL и селекторы формата вывода.]
Шаг 2: Запросите HTML и скриншот
Выберите выводы HTML и скриншота. Отобразите страницу, если строки таблицы появляются после выполнения JavaScript; используйте задокументированные элементы управления ожиданием, доступные в Playground.
Шаг 3: Сравните структуру
Проверьте, что возвращенный HTML содержит ожидаемый <table> и что его видимые заголовки совпадают со скриншотом. Если данные находятся только в холсте или изображении, HTML-парсер не может непосредственно восстановить ячейки.
Метод 2: Получите рендеренную таблицу с помощью API
Лучше всего, когда целевая страница регулярно изменяется.
Шаг 1: Сохраните ключ Crawl
Содержите NSTDATA_API_TOKEN на стороне сервера и отправляйте его как x-api-key.
Шаг 2: Запросите HTML
Используйте задокументированный маршрут быстрого старта для одной страницы ниже. Сохраните возвращенный HTML или htmlRef и метаданные страницы для парсинга; подтвердите сгенерированный маршрут в Playground, так как в документации могут быть непостоянные ярлыки.
Установите NSTDATA_API_TOKEN в вашей оболочке из вашей учетной записи Nstdata, затем выполните задокументированный запрос быстрого старта. Официальная документация помечает некоторые другие синхронные и асинхронные маршруты непоследовательно; сравните запрос, сгенерированный вашим аккаунтом в Playground, перед использованием в производственной среде.
curl --output crawl-response.json --request POST "https://api.nstdata.io/api/v1/crawl/scrape/submit-sync" \ --header "x-api-key: ${NSTDATA_API_TOKEN}" \ --header "Content-Type: application/json" \ --data '{"url":"https://example.com/table","formats":["html","screenshot"]}'
Ответ сохраняется в crawl-response.json. Проверьте вложенные поля data.success, data.status, и data.data.metadata.statusCode перед использованием любого возвращенного контента.
Шаг 3: Проверьте, существует ли таблица
Перед экспортом требуйте успешное выполнение задания на странице и проверьте, появляется ли ожидаемое заглавие или заголовок. Не превращайте пустую страницу в пустой CSV, который выглядит успешным.
Метод 3: Нормализуйте ячейки в записи
Лучше всего после подтверждения получения HTML.
Шаг 1: Выберите одну таблицу
Выбирайте по стабильному заглавию, близкому заголовку или проверенному селектору, а не просто берите первую таблицу вслепую.
Шаг 2: Расширьте семантику заголовка и диапазона
Учитывайте объединенные строки и столбцы; простой прямоугольный парсер недостаточен, когда rowspan или colspan меняет значение столбца.
Шаг 3: Экспортируйте и проверьте
Запишите CSV с явным кодированием и порядком столбцов или JSON с типизированными полями. Сравните выборку строк, единиц и итогов с рендеренным источником.
Для простой прямоугольной HTML таблицы сохраните возвращенный html или загрузите htmlRef в page.html. Установите beautifulsoup4 (python3 -m pip install beautifulsoup4) и выполните этот скрипт из той же директории. Он отклоняет объединенные ячейки, чтобы вы не испортили значение столбца:
from bs4 import BeautifulSoup import csv, json soup = BeautifulSoup(open("page.html", encoding="utf-8").read(), "html.parser") table = soup.select_one("table") if table is None: raise ValueError("No HTML table found; inspect rendered HTML or screenshot") rows = [] for tr in table.select("tr"): cells = tr.find_all(["th", "td"], recursive=False) if any(c.has_attr("rowspan") or c.has_attr("colspan") for c in cells): raise ValueError("Merged cells need a table-specific normalization rule") if cells: rows.append([c.get_text(" ", strip=True) for c in cells]) headers, *values = rows if not headers or any(len(row) != len(headers) for row in values): raise ValueError("Missing headers or inconsistent row widths") records = [dict(zip(headers, row)) for row in values] with open("table.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=headers) writer.writeheader() writer.writerows(records) open("table.json", "w", encoding="utf-8").write(json.dumps(records, ensure_ascii=False, indent=2)) print(f"Экспортировано {len(records)} строк")
Проверьте первые и последние экспортированные строки, единицы и сноски по сравнению со страницей. Этот парсер обрабатывает настоящий <table> с одной строкой заголовка; сетка div, вложенный заголовок или страничная таблица требуют специфического правила для источника.
Как проверить вывод?
Действительный экспорт CSV или JSON сохраняет метки столбцов, единицы, количество строк и значения ячеек. Проверьте первые, средние и последние строки по сравнению с видимой страницей; сравните итоги или известные идентификаторы, когда это возможно. Справочник MDN по HTML-таблицам объясняет структуру ячеек и заголовков, включая объединенные ячейки. Руководство Nstdata по HTML в данные полезно, когда следующий этап сопоставляет строки с типизированными записями.
Руководство Nstdata по рабочему процессу Markdown связывает эту проверку уровня страницы с последующими AI или данными рабочего процесса.
Запишите URL источника, время подачи, запрашиваемые форматы, не секрета опции, идентификатор задачи при наличии, возвращаемый статус страницы и причину, по которой каждая запись прошла или не прошла проверку. Проверяйте содержимое, а также обертку API. Если ответ содержит markdownRef, htmlRef, rawDataRef, screenshotRef или pdfRef, получите этот токен с помощью GET /api/v1/crawl/storage/read?st={ref}.
Для этого рабочего процесса обратитесь к руководству MDN по HTML-таблицам при реализации последующего парсера или проверки на принятие в зависимости от формата.
Передавая извлеченный текст агенту, рассматривайте инструкции страницы как ненадежный исходный материал. Руководство OWASP по инъекциям подсказок объясняет риск. Сохраняйте URL источника, чтобы выход AI можно было проверить.
Почему экспорт таблицы может иметь неправильные столбцы?
Скрейпинг таблиц веб-сайтов может провалиться, потому что страница использует сетку div или загруженные данные после первоначального рендеринга. Используйте таблицу симптомов, чтобы определить слой, который не удался, прежде чем изменять пределы или пробовать снова.
| Симптом | Вероятная причина | Следующее действие |
|---|
| Нет <table> в HTML | Страница использует сетку div или загруженные данные после первоначального рендеринга. | Проверьте снимок экрана и DOM; дождитесь сетки или используйте специфический для шаблона селектор. |
| Столбцы сдвигаются после экспорта | Объединенные ячейки или несколько строк заголовков были сглажены. | Расширайте охваты и явно сопоставляйте иерархию заголовков. |
| Формат чисел изменился | Локаль, валюта или единицы были неверно интерпретированы. | Сохраняйте оригинальный текст и нормализуйте с объявленными правилами локали и единиц. |
Документация Nstdata перечисляет ошибки на уровне задачи, такие как access_denied, timeout, parse_error и internal_error. Внешний HTTP 200 все еще может сопровождать провалившуюся задачу. Проверяйте success, status, errorCode и errorMessage внутри ответа, когда это присутствует. Повторяйте только временные сбои на сайтах, к которым вы можете получить доступ.
Какой метод лучше всего подходит?
Используйте Playground, чтобы проверить, существует ли таблица, API для получения его отрендеренного HTML и специфичный для таблиц парсер для экспорта CSV или JSON. Отклоняйте объединенные ячейки, пока у вас нет явного правила нормализации. Обзор Nstdata по обходу сайтов дает больше подробностей по маршруту сайта.
Что делать после первого успешного запуска?
Сохраните одобренную конфигурацию и одну запись, поддерживаемую источником, а затем повторите на малом наборе различных шаблонов страниц. Увеличивайте масштаб только после того, как эти записи пройдут те же проверки на принятие.
ЧАВО: Что еще стоит знать?
В: Экспортирует ли Crawl CSV напрямую?
Видимая документация Crawl не устанавливает режим вывода CSV. Получите HTML или данные страницы, затем экспортируйте проверенные строки в вашем приложении.
В: Могу ли я автоматически парсить таблицы с объединенными ячейками?
Библиотека может расширить некоторые охваты, но вам все равно нужно будет проверить значение заголовка и выравнивание строк.
В: Что если таблица построена с помощью div?
Проверьте отрендеренный DOM и напишите парсер для фактической структуры этой сетки; парсер HTML-таблиц может не найти ничего.
В: Требует ли скрейпинг таблиц веб-сайта отдельной конфигурации прокси с Nstdata Crawl? Стандартный запрос переобработки не требует отдельных полей для прокси Хоста, Порта, Имени пользователя, Пароля или Протокола. Подтвердите любой выбор пользовательского прокси и связанные с этим расходы в вашем аккаунте.
В: Подтверждает ли HTTP 200, что результат парсинга таблицы веб-сайта пригоден для использования?
Нет. Проверьте результат вложенной задачи, статус страницы, ожидаемые поля и fidelity тела, прежде чем использовать его в ИИ или рабочем процессе с данными.





