Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Чтобы сохранить сайт или веб-страницу в HTML на C#, загрузите URL через HTMLDocument, создайте HTMLSaveOptions, если нужна настройка ресурсов, и вызовите document.Save(savePath, options). Используйте ResourceHandlingOptions, чтобы управлять JavaScript, связанными страницами, ограничениями URL и сохраняемыми ресурсами.
Даже когда интернет обычно доступен, офлайн-копия веб-страницы может понадобиться для чтения, исследования, архивирования, миграции или обработки документов. Сохранение сайта в HTML позволяет держать содержимое страницы и связанные ресурсы доступными вне исходного сайта.
Есть несколько причин, по которым может понадобиться преобразовать сайт в HTML:
В этой статье показано, как сохранить сайт или веб-страницу с помощью Aspose.HTML for .NET API. Процесс можно настроить – сохранить весь сайт или только одну веб-страницу.
Вы можете использовать Aspose.HTML for .NET, чтобы преобразовать сайт в HTML для офлайн-чтения и архивирования ресурсов. Выполните следующие шаги:
HTMLDocument из URL и преобразовать веб-страницу в HTML.HTMLSaveOptions, процесс будет использовать параметры сохранения по умолчанию, как показано в примере ниже.Следующий пример C# показывает, как сохранить веб-страницу. С параметрами сохранения по умолчанию сохраняется только отдельная веб-страница со связанными ресурсами. Обратите внимание, что будут сохранены только ресурсы, находящиеся в том же домене, что и страница сайта.
1// Extract and save a wab page with default save options in C#
2
3// Initialize an HTML document from a URL
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
5
6// Prepare a path to save the downloaded file
7string savePath = Path.Combine(OutputDir, "root/result.html");
8
9// Save the HTML document to the specified file
10document.Save(savePath);С помощью функциональности, описанной в этой статье, можно сохранять как отдельные страницы, так и целые сайты с ресурсами. Чтобы настроить процесс сохранения, укажите параметры обработки ресурсов для объекта HTMLSaveOptions.
Классы HTMLSaveOptions и ResourceHandlingOptions позволяют настраивать процесс сохранения. Например, вы можете управлять глубиной обрабатываемых страниц и сохранять весь сайт или только одну веб-страницу.
В таблице ниже перечислены основные свойства класса ResourceHandlingOptions. Они задают максимальную глубину обработки страниц, ограничения URL и правила обработки внешних ресурсов, таких как изображения, CSS-файлы и JavaScript, при загрузке HTML-документа через API.
| Свойство | Описание |
|---|---|
| Default | Получает или задает enum-значение, которое определяет способ обработки ресурсов по умолчанию. Сейчас поддерживаются значения Save, Ignore и Embed. Значение по умолчанию – Save, то есть ресурс будет сохранен как файл. |
| JavaScript | Определяет способ обработки скриптов. Сейчас поддерживаются значения Save, Ignore, Discard и Embed. Значение по умолчанию – Save, то есть ресурс будет сохранен как файл. |
| MaxHandlingDepth | Определяет максимальную глубину страниц, которые будут обработаны. Используйте это свойство, чтобы управлять тем, сохраняет ли Aspose.HTML только текущую веб-страницу, страницы по прямым ссылкам или более глубокую структуру сайта. Глубина 1 означает, что будут обработаны только страницы, на которые прямо ссылается сохраняемый документ. Значение -1 приводит к обработке всех страниц. Значение по умолчанию – 0. |
| PageUrlRestriction | Содержит сведения об ограничениях, применяемых к URL обрабатываемых страниц. Значение по умолчанию – RootAndSubFolders, то есть обрабатываются только ресурсы в корне и подпапках. |
| ResourceUrlRestriction | Содержит сведения об ограничениях, применяемых к URL обрабатываемых ресурсов, таких как CSS, JavaScript, изображения и другие файлы. Значение по умолчанию – SameHost, то есть обрабатываются только ресурсы с того же хоста. |
Aspose.HTML позволяет управлять логикой сохранения скриптов. Их можно сохранять в отдельные файлы, встраивать или исключать из итогового документа. Следующий пример C# показывает, как сохранить сайт и встроить ресурсы JavaScript в результирующий HTML-документ.
Чтобы сохранить сайт с URL и встроить ресурсы JavaScript:
HTMLDocument из URL и преобразовать сайт в HTML.ResourceHandling.Embed.В следующем примере опция ResourceHandling.Embed указывает, что все ресурсы JavaScript должны быть встроены в HTML-документ при сохранении. Это значит, что итоговый HTML-файл будет содержать все ресурсы JavaScript внутри документа, а не ссылаться на них как на внешние файлы.
1// Download website using HTMLSaveOptions in C#
2
3// Initialize an HTML document from a URL
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
5
6// Create an HTMLSaveOptions object and set the JavaScript property
7HTMLSaveOptions options = new HTMLSaveOptions
8{
9 ResourceHandlingOptions =
10 {
11 JavaScript = ResourceHandling.Embed
12 }
13};
14
15// Prepare a path to save the downloaded file
16string savePath = Path.Combine(OutputDir, "rootAndEmbedJs/result.html");
17
18// Save the HTML document to the specified file
19document.Save(savePath, options);Свойство
MaxHandlingDepth задает максимальную глубину иерархии элементов HTML-документа, которая будет загружена и обработана. API не будет загружать или обрабатывать элементы за пределами этой глубины. Поэтому MaxHandlingDepth помогает оптимизировать сохранение, снижая потребление памяти и вычислительных ресурсов за счет ограничения числа обрабатываемых элементов.
По умолчанию сохраняются только открытый документ и его ресурсы как отдельная веб-страница, но глубиной обработки можно управлять через MaxHandlingDepth. Следующий пример показывает, как сохранить не только документ, но и страницы, на которые он ссылается и URL которых вложен относительно URL этой страницы. Рассмотрим пример C#, где это свойство установлено в 1, что означает сохранение только элементов до глубины 1 в иерархии HTML-документа:
1// Save a website with limited resource depth using C#
2
3// Load an HTML document from a URL
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
5
6// Create an HTMLSaveOptions object and set the MaxHandlingDepth property
7HTMLSaveOptions options = new HTMLSaveOptions
8{
9 ResourceHandlingOptions =
10 {
11 MaxHandlingDepth = 1
12 }
13};
14
15// Prepare the output path for saving the downloaded content
16string savePath = Path.Combine(OutputDir, "rootAndAdjacent/result.html");
17
18// Save the document along with adjacent resources only
19document.Save(savePath, options);Aspose.HTML for .NET предоставляет разные параметры для фильтрации URL сохраняемых страниц сайта. Свойство PageUrlRestriction ограничивает загрузку веб-страниц с определенных URL или доменов при сохранении HTML-документа.
По умолчанию свойство PageUrlRestriction установлено в RootAndSubFolders, то есть обрабатываются только страницы в корне и подпапках. Однако можно задать другое значение – SameHost или None. Значение None позволит загружать веб-страницы из любого домена, URL которых находятся на сохраняемом сайте. Используйте это свойство осторожно, поскольку разрешение загружать страницы из любого домена может повысить риск уязвимостей безопасности.
В следующем примере вместе с документом будут сохранены все страницы, на которые ссылается HTML-документ, и страницы из того же домена:
1// Save a website with restricted resource URLs using C#
2
3// Initialize an HTML document from a URL
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
5
6// Configure HTMLSaveOptions with restricted resource handling
7HTMLSaveOptions options = new HTMLSaveOptions
8{
9 ResourceHandlingOptions =
10 {
11 MaxHandlingDepth = 1,
12 PageUrlRestriction = UrlRestriction.SameHost
13 }
14};
15
16// Prepare the output path for the saved content
17string savePath = Path.Combine(OutputDir, "rootAndManyAdjacent/result.html");
18
19// Save the HTML document and allowed resources to the specified path
20document.Save(savePath, options);| Цель | Какую опцию проверить |
|---|---|
| Сохранить только текущую страницу и ресурсы того же домена | Поведение HTMLSaveOptions по умолчанию |
| Встроить JavaScript в сохраненный HTML | ResourceHandlingOptions.JavaScript = ResourceHandling.Embed |
| Ограничить глубину обработки связанных страниц | ResourceHandlingOptions.MaxHandlingDepth |
| Ограничить, какие связанные страницы можно загружать | ResourceHandlingOptions.PageUrlRestriction |
| Ограничить, какие ресурсы можно сохранять | ResourceHandlingOptions.ResourceUrlRestriction |
| Проблема | Причина | Решение |
|---|---|---|
| Не хватает части CSS, изображений или скриптов | Ограничения URL ресурсов или поведение same-host по умолчанию не позволяют их скачать. | Проверьте ResourceUrlRestriction и убедитесь, что нужные ресурсы разрешены параметрами сохранения. |
| Связанные страницы не сохраняются | MaxHandlingDepth по умолчанию равен 0, поэтому сохраняются только открытый документ и его ресурсы. | Увеличьте MaxHandlingDepth, если нужно обработать связанные страницы. |
| Загружается слишком много страниц | MaxHandlingDepth или PageUrlRestriction заданы слишком широко. | Используйте меньшую глубину и ограничивайте URL страниц через RootAndSubFolders или SameHost. |
| JavaScript-файлы остаются внешними | Обработка JavaScript настроена на сохранение отдельных файлов или используется поведение по умолчанию. | Установите ResourceHandlingOptions.JavaScript в ResourceHandling.Embed, если рабочему процессу нужны встроенные скрипты. |
| Не удается сохранить удаленную страницу | Среда блокирует сетевой доступ, сертификаты или удаленные ресурсы. | Проверьте сетевые разрешения, настройки прокси и CA-сертификаты в среде выполнения. |
Aspose.HTML for .NET может сохранить веб-страницу и обработать связанные страницы и ресурсы согласно HTMLSaveOptions и ResourceHandlingOptions. Используйте MaxHandlingDepth и ограничения URL осторожно, чтобы контролировать объем обрабатываемого сайта.
С параметрами сохранения по умолчанию сохраняются открытый документ и связанные ресурсы. Ограничения обработки ресурсов определяют, какие именно ресурсы будут обработаны.
Установите ResourceHandlingOptions.JavaScript в ResourceHandling.Embed внутри HTMLSaveOptions, затем вызовите Save(savePath, options).
Держите MaxHandlingDepth низким и используйте PageUrlRestriction, чтобы ограничить обрабатываемые страницы корнем, подпапками или тем же хостом.
Полные примеры C# и файлы данных доступны в репозитории Aspose.HTML for .NET на GitHub.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.