Этот гайд описывает порядок действий для выгрузки текстового контента (парсинга) сайта с использованием Screaming Frog SEO Spider с включённым рендерингом JavaScript. После краулинга вы экспортируете исходный и отрендеренный текстовый контент сайта через функцию Bulk Export, а затем с помощью готового скрипта Python объединяете полученные файлы в единый CSV‑файл с колонками url и content.
Шаг 1. Настройте параметры парсинга #
SFSS может парсить как «сырой» HTML, так и выводимый средствами JavaScript. Для задач SEO бывает важно выгрузить оба варианта. В настройках краудера поставьте галочки, определяющие, какой именно контент вам нужен.
Откройте меню Configuration > Spider > Extraction. Отметьте, будет ли краулер извлекать «отрисованный» контент.

Кроме этого, полезно настроить правила извлечения контента. Вы можете исключить сквозные блоки («шапку» и «подвал» сайта, меню и т.п.). Иногда нужно включить в анализ полные данные постранично, но чаще приходится работать только с основным контентом страницы, который должен быть уникальным в рамках сайта.
Шаг 2. Запустите сканирование сайта #
- Введите стартовый URL в верхнюю строку и нажмите Start.
- Дождитесь завершения сканирования. В нижней строке статуса отображается прогресс.
- Убедитесь, что все нужные страницы (включая те, что требуют JS) успешно обработаны.
- По завершении сканирования запустите Crawl Analysis.
Шаг 3. Экспортируйте исходный и отрендеренный контент через Bulk Export #
В актуальных версиях Screaming Frog не позволяет экспортировать контент в единую таблицу, как делает это с тайтлами, метатегами и т.п. Вместо этого он выгружает контент постранично, в текстовом (txt) формате, в отдельные файлы, где адрес страницы становится названием этого файла.
Это неудобно для работы с текстовыми данными: вы получаете целый ворох разрозненных данных.
Кроме того, контент каждой страницы выгружается в двух вариантах: «сырой» (с приставкой “original” и с отрисовкой JS-контента (“rendered”). В дальнейшем скрипт будет работать с версией “rendered”.
Создайте проектную папку (желательно не использовать в названии кириллицу), а в ней – папку “txt_files”.
- Откройте меню Bulk Export > Web > All page text
- Выберите папку txt_files в своей проектной папке и сохраните контент
После экспорта в выбранной папке окажется множество txt-файлов. Их имена содержат URL‑кодированные адреса страниц и метку (original или rendered). Удалите ненужные.
Шаг 4. Используйте готовый скрипт Python для компиляции в CSV #
Создайте в проектной папке скрипт rename_copy_files.py со следующим кодом:
import os
import shutil
import glob
import pandas as pd
from pathlib import Path
# ========== НАСТРОЙКИ ==========
SOURCE_FOLDER = "./txt_files" # исходная папка с длинными именами
TARGET_FOLDER = "./txt_shortnames" # новая папка для коротких имён (создастся автоматически)
MAPPING_CSV = "mapping.csv"
# ================================
def extract_url_from_filename(filename_stem: str) -> str:
"""
Преобразует имя файла (без расширения) обратно в URL.
Настройте под свой формат.
"""
# Убираем префикс 'rendered_' если есть
if filename_stem.startswith("rendered_"):
url = filename_stem[9:]
else:
url = filename_stem
# Заменяем '_' на '/', затем чиним протокол
# ВНИМАНИЕ: это может сломать URL, если в нём были настоящие '_' (но обычно их нет)
url = url.replace("_", "/")
url = url.replace("https//", "https://")
url = url.replace("http//", "http://")
return url
def main():
# Создаём целевую папку, если её нет
os.makedirs(TARGET_FOLDER, exist_ok=True)
# Находим все .txt файлы в исходной папке
files = glob.glob(os.path.join(SOURCE_FOLDER, "*.txt"))
if not files:
print(f"Нет файлов в {SOURCE_FOLDER}")
return
print(f"Найдено {len(files)} файлов. Начинаем копирование...")
mapping_data = []
for idx, old_path in enumerate(files, start=1):
# Короткое имя с ведущими нулями
new_name = f"{idx:04d}.txt"
new_path = os.path.join(TARGET_FOLDER, new_name)
# Исходное имя файла (полное, с расширением)
old_name_full = os.path.basename(old_path)
old_stem = Path(old_path).stem
# Извлекаем URL
url = extract_url_from_filename(old_stem)
try:
# Копируем файл
shutil.copy2(old_path, new_path)
print(f"Скопирован: {old_name_full} -> {new_name}")
except Exception as e:
print(f"ОШИБКА копирования {old_name_full}: {e}")
continue
mapping_data.append({
"new_filename": new_name,
"original_filename": old_name_full,
"original_stem": old_stem,
"extracted_url": url
})
# Сохраняем mapping.csv
df_mapping = pd.DataFrame(mapping_data)
df_mapping.to_csv(MAPPING_CSV, index=False, encoding='utf-8')
print(f"\nГотово! Скопировано {len(mapping_data)} файлов в папку '{TARGET_FOLDER}'")
print(f"Создан {MAPPING_CSV}")
if __name__ == "__main__":
main()
После запуска этого кода у вас появится ещё одна папка с переименованными файлами и файл mapping.csv, определяющий, под каким именем сохранён соответствующий конкретному URL контент.
Теперь можно перейти к заключительной стадии процесса. Создайте в этой же папке скрипт create_csv.py со следующим кодом:
import os
import pandas as pd
SOURCE_FOLDER = "./txt_shortnames" # новая папка с короткими именами
MAPPING_CSV = "mapping.csv"
OUTPUT_CSV = "documents.csv"
def main():
if not os.path.exists(MAPPING_CSV):
print(f"Ошибка: {MAPPING_CSV} не найден. Сначала запустите rename_copy_files.py")
return
df_mapping = pd.read_csv(MAPPING_CSV, encoding='utf-8')
data = []
for _, row in df_mapping.iterrows():
new_filename = row["new_filename"]
file_path = os.path.join(SOURCE_FOLDER, new_filename)
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
except Exception as e:
print(f"Ошибка чтения {new_filename}: {e}")
content = ""
url = row["extracted_url"] # или row["original_stem"] – как удобнее
data.append({"url": url, "content": content})
df_out = pd.DataFrame(data)
df_out.to_csv(OUTPUT_CSV, index=False, encoding='utf-8')
print(f"Готово! Сохранено {len(df_out)} документов в {OUTPUT_CSV}")
if __name__ == "__main__":
main()
Скрипт создаст файл documents.csv, содержащий две колонки: “url” и “content”.
Шаг 5. Проверьте результат и используйте CSV #
- Откройте полученный CSV в любом табличном редакторе (Excel, Google Sheets, LibreOffice) или обработайте программно.
- Проверьте, что для каждой страницы содержимое соответствует оригинальной или отрендеренной версии.
- При необходимости запустите скрипт повторно с другими параметрами.
Теперь вы можете легко парсить контент даже динамических сайтов, используя связку Screaming Frog SEO Spider + ваш собственный скрипт Python. CSV с колонками url и content удобно использовать для дальнейшего анализа, обучения моделей или загрузки в базы данных. В своей практике я использую полученные данные для векторизации и дальнейшего анализа.
