Website to HTML – Как сохранить веб-сайт на C#
Хотя в наши дни проводной Интернет или Wi-Fi доступен повсюду, бывает, что время от времени у вас может отсутствовать подключение к Интернету; например, между остановками метро, в поездке или в самолете. Чтобы иметь доступ к информации без подключения к сети, вам необходимо загружать и сохранять содержимое различных веб-сайтов, чтобы использовать их в автономном режиме, возможно, для чтения, исследования или развлечения.
Есть несколько причин, по которым вы хотели бы сохранить веб-сайт как HTML файл:
- доступ к информации без подключения к сети;
- извлечение полезной информации с веб-сайтов для анализа или других целей;
- запись содержимого страницы, чтобы данные не стали недоступны по какой-либо причине. Возможно, у вас есть опыт работы с неработающими закладками;
- перенос статических HTML-сайтов на другой хостинг;
- архивирование контента и создание резервных копий;
- учебные цели, такие как изучение дизайна или шаблонов веб-страниц и многое другое.
В этой статье описаны способы cохранения веб-сайта с URL-адреса с помощью Aspose.HTML for .NET API. Вы можете настроить процесс сохранения – загрузить весь веб-сайт или загрузить веб-страницу.
Сохранить веб-сайт – Website to HTML
Вы можете использовать библиотеку Aspose.HTML for .NET для извлечения и сохранения веб-сайта для чтения в автономном режиме без каких-либо проблем. Чтобы загрузить веб-сайт с URL-адреса, вам необходимо выполнить несколько следующих шагов:
- Используйте конструктор
HTMLDocument(
Url
) для загрузки объектаHTMLdocument
из URL-адреса. - Создайте экземпляр класса
HTMLSaveOptions и задайте необходимые свойства для настройки процесса загрузки. Если вы не инициализируете
HTMLSaveOptions
, процесс загрузки будет работать с параметрами сохранения по умолчанию, как показано в примере ниже. - Вызовите
Save(
savePath)
или Save(savePath
,options
) метод сохранения веб-сайта в автономном режиме.
В следующем примере C# показано, как загрузить веб-сайт с параметрами сохранения по умолчанию. Вы извлекаете только отдельную веб-страницу со связанными ресурсами, используя параметры сохранения по умолчанию. Обратите внимание, что будут сохранены только те ресурсы, которые находятся в том же домене, что и страница сайта.
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);
С помощью функционала, описанного в этой статье, вы сможете сохранять как отдельные страницы, так и целые сайты с ресурсами. Чтобы настроить процесс загрузки, вы можете указать параметры обработки ресурсов для объекта HTMLSaveOptions.
Варианты обработки ресурсов
Используя HTMLSaveOptions и ResourceHandlingOptions позволяет настроить процесс сохранения. Например, вы можете управлять глубиной обрабатываемых страниц и загружать весь веб-сайт или сохранять только отдельные веб-страницы.
В таблице ниже приведены основные свойства класса ResourceHandlingOptions. Они предоставляют параметры для обработки максимальной глубины страницы, применения ограничений или обработки внешних ресурсов, таких как изображения, файлы CSS и JavaScript, при загрузке документа HTML с помощью API.
Property | Description |
---|---|
Default | Gets 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. |
JavaScript | Represents 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. |
MaxHandlingDepth | This 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 download entire website or only save individual web pages. 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. |
PageUrlRestriction | Contains information about restrictions applied to URLs of handled pages. The default value is RootAndSubFolders , meaning only resources in the root and subfolders are processed. |
ResourceUrlRestriction | This 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. |
Cохранить веб-сайт, используя свойство JavaScript
Aspose.HTML предоставляет возможность управлять логикой сохранения скриптов. Их можно сохранить в отдельные файлы, внедрить или выкинуть из получившегося документа. В следующем примере C# показано, как извлечь веб-сайт и внедрить все сценарии JavaScript, которые необходимо сохранить, в результирующий HTML-документ.
- Используйте конструктор
HTMLDocument(
Url
) для загрузки объекта HTMLdocument из URL-адреса. - Создайте экземпляр класса
HTMLSaveOptions и задайте
JavaScripts со значением
ResourceHandling.Embed
. - Вызовите метод
Save(
savePath
,options
), чтобы сохранить веб-сайт в автономном режиме.
Чтобы загрузить веб-сайт с URL-адреса, вам необходимо выполнить несколько следующих шагов:
В следующем примере параметр ResourceHandling.Embed
указывает, что любые ресурсы JavaScript
должны быть встроены в документ HTML при сохранении. Это означает, что результирующий файл HTML будет содержать все ресурсы JavaScript
внутри документа, а не ссылаться на них как на внешние файлы.
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);
Сохранить веб-сайт, используя свойство MaxHandlingDepth
Свойство MaxHandlingDepth указывает максимальную глубину иерархии элементов HTML-документа для загрузки и обработки. API не будет загружать или обрабатывать какие-либо элементы за пределами этой глубины. Таким образом, «MaxHandlingDepth» оптимизирует производительность процесса сохранения, помогая уменьшить объем памяти и вычислительную мощность, необходимые для API, за счет ограничения количества обрабатываемых элементов.
Только открытый документ и его ресурсы по умолчанию сохраняются как отдельная веб-страница, но вы можете управлять глубиной обработки с помощью свойства MaxHandlingDepth. В следующем примере показано, как сохранить не только документ, но и все страницы, на которые он ссылается и URL-адрес которых вложен относительно URL-адреса этой страницы. Давайте посмотрим на пример C#, когда для этого свойства установлено значение 1, что означает, что будут загружены только элементы до глубины 1 в иерархии документа 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);
Сохранить веб-сайт, используя свойство PageUrlRestriction
Aspose.HTML for .NET предоставляет различные параметры для фильтрации URL-адресов сохраненных страниц веб-сайта. Свойство PageUrlRestriction ограничивает загрузку веб-страниц с определенных URL-адресов или доменов при сохранении HTML-документа. Это свойство помогает повысить безопасность сохраненной страницы, предотвращая загрузку потенциально вредоносных веб-страниц.
По умолчанию свойство PageUrlRestriction
установлено в RootAndSubFolders
, что означает, что обрабатываются только страницы в корне и подпапках. Однако вы можете установить для этого свойства другое значение – «SameHost» или «None». Установка для него значения «None» позволит вам загружать веб-страницы с любого домена, чьи URL-адреса находятся на сохраненном веб-сайте. Очень важно использовать это свойство с осторожностью, поскольку разрешение загружать веб-страницы из любого домена может увеличить риск уязвимостей в системе безопасности.
В следующем примере все страницы, на которые ссылается HTML-документ, и страницы того же домена будут сохранены в дополнение к документу:
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);
Вы можете скачать полные примеры C# и файлы данных с GitHub.