ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo crear un exportador CSV de comentarios de YouTube en Python
Tutorial

Cómo crear un exportador CSV de comentarios de YouTube en Python

Cree una herramienta Python que obtenga comentarios de videos de YouTube a través de la API de Scavio y los exporte a CSV con campos de autor, texto, me gusta y marca de tiempo.

Obtener clave API gratisDocumentacion API

Los comentarios de YouTube contienen comentarios sobre productos, opiniones de la audiencia e ideas de contenido que son difíciles de extraer a escala. La API de datos oficial de YouTube tiene límites de cuota estrictos y requiere la configuración de OAuth para la mayoría de las operaciones de comentarios. La API de Scavio proporciona una ruta más sencilla: PUBLICAR con una identificación de video y recibir datos de comentarios estructurados, incluido el autor, el texto, el recuento de me gusta, el recuento de respuestas y la fecha de publicación. Este tutorial crea un script de Python reutilizable que recupera todos los comentarios disponibles para un video y los escribe en un archivo CSV adecuado para su análisis en hojas de cálculo o pandas.

Requisitos previos

  • Python 3.8 o superior instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev
  • Una identificación de video de YouTube para probar

Guia paso a paso

Paso 1: Obtener comentarios para un vídeo

PUBLICAR en el punto final de Scavio con la plataforma de YouTube y la identificación del video. La respuesta incluye una matriz de comentarios con datos estructurados para cada comentario.

Python
import os
import requests

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")

def fetch_comments(video_id: str) -> list[dict]:
    r = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "youtube", "action": "comments", "video_id": video_id}
    )
    r.raise_for_status()
    return r.json().get("comments", [])

Paso 2: Normalizar y limpiar datos de comentarios

Extraiga los campos que necesita de cada objeto de comentario. Elimine las nuevas líneas del texto del comentario para evitar romper las filas CSV.

Python
def normalize_comment(comment: dict) -> dict:
    return {
        "author": comment.get("author", ""),
        "text": comment.get("text", "").replace("\n", " ").strip(),
        "likes": comment.get("likes", 0),
        "replies": comment.get("reply_count", 0),
        "date": comment.get("published_at", "")
    }

Paso 3: Escribir comentarios en CSV

Utilice csv.DictWriter para generar los comentarios normalizados. Incluya una fila de encabezado con nombres de columnas.

Python
import csv

def write_csv(comments: list[dict], output: str) -> None:
    fields = ["author", "text", "likes", "replies", "date"]
    with open(output, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()
        writer.writerows(comments)
    print(f"Wrote {len(comments)} comments to {output}")

Paso 4: Ejecutar todo el proceso de exportación

Encadena las funciones. Acepte una identificación de video como entrada, obtenga, normalice y exporte.

Python
video_id = "dQw4w9WgXcQ"
raw = fetch_comments(video_id)
normalized = [normalize_comment(c) for c in raw]
write_csv(normalized, f"comments_{video_id}.csv")
print(f"Exported {len(normalized)} comments for video {video_id}")

Ejemplo en Python

Python
import os
import csv
import requests

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"

def fetch_comments(video_id: str) -> list[dict]:
    r = requests.post(
        ENDPOINT,
        headers={"x-api-key": API_KEY},
        json={"platform": "youtube", "action": "comments", "video_id": video_id}
    )
    r.raise_for_status()
    return r.json().get("comments", [])

def normalize(comment: dict) -> dict:
    return {
        "author": comment.get("author", ""),
        "text": comment.get("text", "").replace("\n", " ").strip(),
        "likes": comment.get("likes", 0),
        "replies": comment.get("reply_count", 0),
        "date": comment.get("published_at", "")
    }

def export_to_csv(video_id: str, output: str = "") -> None:
    if not output:
        output = f"comments_{video_id}.csv"
    raw = fetch_comments(video_id)
    comments = [normalize(c) for c in raw]
    fields = ["author", "text", "likes", "replies", "date"]
    with open(output, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()
        writer.writerows(comments)
    print(f"Exported {len(comments)} comments to {output}")

if __name__ == "__main__":
    export_to_csv("dQw4w9WgXcQ")

Ejemplo en JavaScript

JavaScript
const fs = require("fs");
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";

async function fetchComments(videoId) {
  const res = await fetch(ENDPOINT, {
    method: "POST",
    headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ platform: "youtube", action: "comments", video_id: videoId })
  });
  const data = await res.json();
  return data.comments || [];
}

async function exportToCsv(videoId) {
  const raw = await fetchComments(videoId);
  const header = "author,text,likes,replies,date";
  const rows = raw.map(c => {
    const text = (c.text || "").replace(/[\n\r]/g, " ").replace(/"/g, '""');
    return `"${c.author || ""}","${text}",${c.likes || 0},${c.reply_count || 0},"${c.published_at || ""}"`;
  });
  fs.writeFileSync(`comments_${videoId}.csv`, [header, ...rows].join("\n"));
  console.log(`Exported ${raw.length} comments`);
}

exportToCsv("dQw4w9WgXcQ").catch(console.error);

Salida esperada

JSON
{
  "video_id": "dQw4w9WgXcQ",
  "comments": [
    {
      "author": "MusicFan2026",
      "text": "This song will never get old.",
      "likes": 42,
      "reply_count": 3,
      "published_at": "2026-01-15T08:30:00Z"
    },
    {
      "author": "RetroVibes",
      "text": "Still the greatest rickroll of all time.",
      "likes": 18,
      "reply_count": 1,
      "published_at": "2026-02-20T14:12:00Z"
    }
  ]
}

Tutoriales relacionados

  • Cómo crear un analizador de canales de YouTube con una API de búsqueda
  • Cómo crear un agente de investigación de YouTube
  • Cómo obtener metadatos de vídeos de YouTube a través de API

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.8 o superior instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Una identificación de video de YouTube para probar. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

La mejor API de datos de YouTube en 2026

Read more
Best Of

Las mejores API de datos de YouTube sin límites de cuota (2026)

Read more
Solution

Encuentre personas influyentes de YouTube a través de API en lugar de scraping

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Comparison

Scavio vs Apify (YouTube actors)

Read more
Comparison

TubeMine vs YouTube Data API (via Scavio)

Read more

Empieza a construir

Cree una herramienta Python que obtenga comentarios de videos de YouTube a través de la API de Scavio y los exporte a CSV con campos de autor, texto, me gusta y marca de tiempo.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad