YAML (YAML Ain't Markup Language) es un lenguaje de serialización de datos amigable para humanos y multiplataforma que se utiliza comúnmente para archivos de configuración y representa datos como mapeos, secuencias y escalares. La versión 1.2 convirtió a YAML en un superconjunto estricto de JSON. En el trabajo con proxies y scraping, YAML aparece en archivos de configuración. Por ejemplo, la configuración estática del proxy Envoy está escrita en YAML y define los oyentes y clústeres por los que fluye el tráfico.

Fundamentos de la Sintaxis YAML

  • Mapeos: key: value pares, como diccionarios o hashes.
  • Secuencias: Listas, con cada elemento en su propia línea comenzando con -.
  • Sangrías: En estilo de bloque, la sangría determina la estructura, por lo que un espacio mal colocado cambia el significado de los datos.
  • Sin tabulaciones: No se deben usar caracteres de tabulación para la sangría.
  • Comentarios: Un # inicia un comentario.

Uso Seguro de YAML en Configuraciones de Scraper y Proxy

Los analizadores YAML pueden hacer más que leer datos simples. La documentación de PyYAML advierte que llamar a yaml.load en datos de una fuente no confiable no es seguro, porque puede construir objetos de Python arbitrarios. Su función yaml.safe_load reconoce solo etiquetas YAML estándar, lo que lo convierte en la opción documentada para entradas no confiables.

Cadenas de Múltiples Líneas, Anclas y Múltiples Documentos

  • Bloque literal (|): Mantiene cada salto de línea en una cadena de múltiples líneas.
  • Bloque plegado (>): Convierte cada salto de línea en un espacio, excepto antes de líneas vacías o más indentadas.
  • Anclas y alias: &name marca un nodo, y *name lo reutiliza más tarde en lugar de repetirlo.
  • Múltiples documentos: --- marca el inicio del contenido de un documento, por lo que un flujo puede contener varios documentos. ... finaliza un documento sin iniciar uno nuevo.

Términos Relacionados