---
title: Как парсить контент с помощью Screaming Frog SEO Spider
description: Этот гайд описывает порядок действий для выгрузки текстового контента (парсинга) сайта с использованием Screaming Frog SEO Spider с включённым рендерингом JavaScript
url: "https://textarget.ru/docs/kak-parsit-kontent-s-pomoshhju-screaming-frog-seo-spider/"
updated: "2026-05-15"
category: Парсинг
tags:
  - python
  - примеры кода
  - семантика
---

# Как парсить контент с помощью Screaming Frog SEO Spider

Этот гайд описывает порядок действий для выгрузки текстового контента ([парсинг](https://textarget.ru/encyclopedia/parsing/)а) сайта с использованием Screaming Frog SEO Spider с включённым рендерингом [JavaScript](https://textarget.ru/encyclopedia/javascript/). После краулинга вы экспортируете исходный и отрендеренный текстовый контент сайта через функцию Bulk Export, а затем с помощью готового скрипта Python объединяете полученные файлы в единый CSV‑файл с колонками [url](https://textarget.ru/encyclopedia/url/) и content.

## Шаг 1. Настройте параметры парсинга

SFSS может парсить как «сырой» HTML, так и выводимый средствами JavaScript. Для задач SEO бывает важно выгрузить оба варианта. В настройках краудера поставьте галочки, определяющие, какой именно контент вам нужен.

Откройте меню Configuration > Spider > Extraction. Отметьте, будет ли краулер извлекать «отрисованный» контент.

![Настройки сканирования сайта](https://textarget.ru/wp-content/uploads/2026/05/extraction-1024x698.png)

Кроме этого, полезно настроить правила извлечения контента. Вы можете исключить сквозные блоки («шапку» и «подвал» сайта, меню и т.п.). Иногда нужно включить в анализ полные данные постранично, но чаще приходится работать только с основным контентом страницы, который должен быть уникальным в рамках сайта.

## Шаг 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 удобно использовать для дальнейшего анализа, обучения моделей или загрузки в базы данных. В своей практике я использую полученные данные для векторизации и дальнейшего анализа.
