Sitio web a HTML – Guardar sitio web – C#

Sitio web a HTML

Si bien Internet por cable o Wi-Fi está disponible en todas partes hoy en día, sucede que es posible que no tengas conexión a Internet de vez en cuando; por ejemplo, entre paradas de metro, en un viaje o en un vuelo. Para poder acceder a la información sin una conexión a la red, es necesario guardar el contenido de diferentes sitios web para poder utilizarlos sin conexión, tal vez para lectura, investigación o entretenimiento.

Hay algunas razones por las que querrías convertir un sitio web a HTML:

Este artículo proporciona formas de guardar un sitio web o cómo guardar una página web usando Aspose.HTML for .NET API. Puede personalizar el proceso: guardar un sitio web completo o guardar una página web.

Cómo guardar una página web

Puede utilizar la biblioteca Aspose.HTML for .NET para convertir un sitio web a HTML para leerlo sin conexión sin problemas. Debe seguir algunos pasos siguientes:

  1. Utilice el constructor HTMLDocument(Url) para cargar un objeto HTMLdocument desde una URL para convertir una página web a HTML.
  2. Cree una instancia de la clase HTMLSaveOptions y establezca las propiedades requeridas para personalizar el proceso de guardado. Si no inicializa HTMLSaveOptions, el proceso funcionará con las opciones de guardado predeterminadas, como se muestra en el siguiente ejemplo.
  3. Llame al método Save(savePath) o Save(savePath, options) para guardar el sitio web sin conexión.

El siguiente ejemplo de C# muestra cómo guardar una página web. Con las opciones de guardado predeterminadas, solo guarda una página web separada con recursos relacionados. Tenga en cuenta que solo se guardarán los recursos que estén en el mismo dominio que la página del sitio.

1// Initialize an HTML document from a URL
2using var document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
3
4// Prepare a path to save the downloaded file
5string savePath = Path.Combine(OutputDir, "root/result.html");
6
7// Save the HTML document to the specified file
8document.Save(savePath);

Con la funcionalidad descrita en este artículo, puede guardar páginas individuales y sitios web completos con recursos. Para personalizar el proceso de guardado, puede especificar las opciones de manejo de recursos para el objeto HTMLSaveOptions.

Clase ResourceHandlingOptions

El uso de las clases HTMLSaveOptions y ResourceHandlingOptions le permite personalizar el proceso de guardado. Por ejemplo, puede manipular la profundidad de las páginas que se manejarán y guardar un sitio web completo o solo guardar una página web.

La siguiente tabla resume las propiedades principales de la clase ResourceHandlingOptions. Proporcionan opciones para manejar la profundidad máxima de la página, aplicar límites o manejar recursos externos como imágenes, archivos CSS y JavaScript al cargar un documento HTML usando la API.

PropertyDescription
DefaultGets or sets an enum representing the default resource handling method. Currently, Save, Ignore, and Embed values are supported. The default value is Save, meaning the resource will be saved as a file.
JavaScriptRepresents the way scripts are handled. Currently, Save, Ignore, Discard, and Embed values are supported. The default value is Save, meaning the resource will be saved as a file.
MaxHandlingDepthThis property contains information about the maximum depth of pages that will be handled. Using this property, you can manipulate the depth of pages that will be handled and save entire website or only save a web page. A depth of 1 means only pages directly referenced from the saved document will be handled. Setting this property to -1 will lead to the handling of all pages. The default value is 0.
PageUrlRestrictionContains information about restrictions applied to URLs of handled pages. The default value is RootAndSubFolders, meaning only resources in the root and subfolders are processed.
ResourceUrlRestrictionThis property contains information about restrictions applied to URLs of handled resources such as CSS, js, images, etc. The default value is SameHost, meaning only resources in the same host are processed.

Sitio web a HTML usando la propiedad JavaScript

Aspose.HTML proporciona la capacidad de controlar la lógica para guardar scripts. Pueden guardarse en archivos separados, incrustarse o eliminarse del documento resultante. El siguiente ejemplo de C# muestra cómo guardar un sitio web e incrustar todos los JavaScript que se guardarán en el documento HTML resultante.

  1. Utilice el constructor HTMLDocument(Url) para cargar un objeto de documento HTML desde una URL para convertir un sitio web a HTML.
  2. Cree una instancia de la clase HTMLSaveOptions y establezca la propiedad JavaScripts con el valor ResourceHandling.Embed.
  3. Llame al método Save(savePath, options) para guardar el sitio web sin conexión.

Para guardar el sitio web desde la URL, debe seguir algunos de los siguientes pasos: En el siguiente ejemplo, la opción ResourceHandling.Embed especifica que cualquier recurso JavaScript debe incrustarse en el documento HTML cuando se guarda. Esto significa que el archivo HTML resultante contendrá todos los recursos JavaScript dentro del documento en lugar de hacer referencia a ellos como archivos externos.

 1// Initialize an HTML document from a URL
 2using var document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 3
 4// Create an HTMLSaveOptions object and set the JavaScript property
 5var options = new HTMLSaveOptions
 6{
 7    ResourceHandlingOptions =
 8    {
 9        JavaScript = ResourceHandling.Embed
10    }
11};
12
13// Prepare a path to save the downloaded file
14string savePath = Path.Combine(OutputDir, "rootAndEmbedJs/result.html");
15
16// Save the HTML document to the specified file
17document.Save(savePath, options);

Sitio web a HTML usando la propiedad MaxHandlingDepth

La propiedad MaxHandlingDepth especifica la profundidad máxima de la jerarquía de elementos del documento HTML que se cargará y procesará. La API no cargará ni procesará ningún elemento más allá de esta profundidad. Por lo tanto, MaxHandlingDepth optimiza el rendimiento del proceso de guardado, ayudando a reducir la memoria y la potencia de procesamiento requerida por la API al limitar la cantidad de elementos a procesar.

Sólo el documento abierto y sus recursos se guardan de forma predeterminada como una página web individual, pero puede controlar la profundidad del manejo con la propiedad MaxHandlingDepth. El siguiente ejemplo muestra cómo guardar no sólo el documento sino también todas las páginas a las que enlaza y cuya URL está anidada en relación con la URL de esta página. Veamos el ejemplo de C# cuando esta propiedad se establece en 1, lo que significa que solo se guardarán elementos hasta una profundidad de 1 en la jerarquía del documento HTML:

 1// Load an HTML document from a URL
 2using var document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 3
 4// Create an HTMLSaveOptions object and set the MaxHandlingDepth property
 5var options = new HTMLSaveOptions
 6{
 7    ResourceHandlingOptions =
 8    {
 9        MaxHandlingDepth = 1
10    }
11};
12
13// Prepare a path for downloaded file saving 
14string savePath = Path.Combine(OutputDir, "rootAndAdjacent/result.html");
15
16// Save the HTML document to the specified file
17document.Save(savePath, options);

Guarde el sitio web usando la propiedad PageUrlRestriction

Aspose.HTML for .NET proporciona varias opciones para filtrar las URL de las páginas guardadas de un sitio web. La propiedad PageUrlRestriction restringe la carga de páginas web desde URL o dominios específicos al guardar un documento HTML.

De forma predeterminada, la propiedad PageUrlRestriction está establecida en RootAndSubFolders, lo que significa que solo se procesan las páginas de la raíz y las subcarpetas. Sin embargo, puede establecer esta propiedad en otro valor: SameHost o None. Configurarlo en None le permitirá cargar páginas web desde cualquier dominio cuyas URL estén en el sitio web guardado. Usar esta propiedad con precaución es esencial, ya que permitir que las páginas web se carguen desde cualquier dominio puede aumentar el riesgo de vulnerabilidades de seguridad.

En el siguiente ejemplo, todas las páginas a las que hace referencia un documento HTML y las del mismo dominio se guardarán además del documento:

 1// Initialize an HTML document from a URL
 2using var document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 3
 4// Create an HTMLSaveOptions object and set MaxHandlingDepth and PageUrlRestriction properties 
 5var options = new HTMLSaveOptions
 6{
 7    ResourceHandlingOptions =
 8    {
 9        MaxHandlingDepth = 1,
10        PageUrlRestriction = UrlRestriction.SameHost
11    }
12};
13
14// Prepare a path to save the downloaded file
15string savePath = Path.Combine(OutputDir, "rootAndManyAdjacent/result.html");
16
17// Save the HTML document to the specified file
18document.Save(savePath, options);

Puede descargar los ejemplos completos de C# y los archivos de datos desde GitHub.

Aspose.HTML ofrece Aplicaciones web HTML que son una colección en línea de convertidores, fusiones, herramientas de SEO, generadores de código HTML, herramientas de URL y más gratuitos. Las aplicaciones funcionan en cualquier sistema operativo con un navegador web y no requieren ninguna instalación de software adicional. Convierta, fusione, codifique, genere código HTML, extraiga datos de la web o analice páginas web en términos de SEO fácilmente dondequiera que esté. Utilice nuestra colección de aplicaciones web HTML para realizar sus asuntos diarios y hacer que su flujo de trabajo sea fluido.

Texto “Aplicaciones web HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.