Извлечь SVG с веб-сайта на Python

SVG – это векторный формат, разработанный для Интернета, часто используемый в документах HTML. Его основным преимуществом является способность масштабироваться до любого размера без потери качества, что делает его идеальным для поддержания четкости изображения на дисплеях различных размеров. Помимо масштабируемости, SVG предлагает дополнительные преимущества, такие как программируемость, небольшой размер файла, расширенные возможности стилизации и интерактивность, которые повышают визуальную привлекательность и функциональность веб-страниц. Для дизайнеров и разработчиков извлечение изображений SVG с веб-сайта может оказаться сложной задачей, особенно когда стандартные методы, такие как щелчок правой кнопкой мыши для сохранения или открытия изображения, неэффективны.

С помощью Aspose.HTML for Python via .NET вы можете легко программно извлекать изображения SVG с веб-сайта. Эта библиотека предоставляет инструменты для обработки как встроенных SVG (inline SVG), так и внешних SVG (external SVG), упрощая процесс поиска и извлечения этих изображений. Наша библиотека Python упрощает получение SVG-файлов с веб-сайтов, предлагая более эффективную альтернативу методам извлечения вручную.

Извлечение SVG с веб-сайта – встроенный SVG (Inline SVG)

Встроенные изображения SVG – это элементы SVG <svg>, содержимое которых описывает изображение. В отличие от внешних изображений SVG, которые связаны через URL-адреса, встроенные изображения SVG встроены непосредственно в HTML-код веб-страницы. Эти встроенные файлы SVG не хранятся как отдельные файлы и поэтому требуют специальной обработки для доступа и сохранения.

Чтобы сохранить встроенные изображения SVG с веб-сайта, нам нужно будет найти все элементы <svg> в HTML-документе и извлечь их содержимое с помощью свойства outer_html. Вот пошаговое руководство по загрузке изображений SVG с веб-сайта:

  1. Используйте конструктор HTMLDocument(Url), чтобы создать экземпляр класса HTMLDocument и передать ему URL-адрес веб-сайта, с которого вы хотите извлечь встроенные изображения SVG.
  2. Используйте метод get_elements_by_tag_name(“svg”) для сбора всех элементов <svg>. Этот метод возвращает список элементов <svg>, встроенных в HTML.
  3. Переберите список элементов <svg> и сохраните каждый SVG в локальной файловой системе.
  4. Используйте свойство outer_html, чтобы получить полное HTML-представление элемента <svg>. Каждый <svg> сохраняется с уникальным именем файла, чтобы избежать перезаписи.

Следующий код Python демонстрирует простой подход к извлечению встроенных изображений SVG с веб-страницы с использованием библиотеки Python Aspose.HTML:

 1import os
 2from aspose.html import *
 3
 4# Prepare the output directory
 5output_dir = "output/svg/"
 6os.makedirs(output_dir, exist_ok=True)
 7
 8# Open a document you want to extract inline SVG images from
 9with HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/") as document:
10    # Collect all inline SVG images
11    images = document.get_elements_by_tag_name("svg")
12
13    for i, image in enumerate(images):
14        # Save every SVG image to a local file system
15        with open(os.path.join(output_dir, f"{i}.svg"), 'w', encoding='utf-8') as file:
16            file.write(image.outer_html)

Примечание. Некоторые файлы SVG могут быть защищены авторским правом, поэтому перед их извлечением и использованием ознакомьтесь с условиями использования. Например, использование логотипа компании или других извлеченных файлов SVG в ваших дизайнерских проектах может считаться плагиатом, и вам не следует этого делать. Возможно, было бы неплохо спросить разрешения у владельцев веб-сайтов, прежде чем использовать их файлы.

Извлечение SVG с веб-сайта – внешний SVG (External SVG)

Внешний SVG – это файл SVG, хранящийся вне HTML-документа и загружаемый в документ с помощью, например, тега <img>. Отделение файлов SVG от HTML позволяет повторно использовать одно и то же изображение SVG в нескольких местах без дублирования кода, что делает веб-страницы более эффективными и простыми в обслуживании.

Внешние изображения SVG представлены элементом <img>, который, в свою очередь, также может ссылаться на другие типы изображений, поэтому изображения SVG необходимо дополнительно фильтровать. Следующий код Python автоматизирует процесс извлечения изображений SVG с веб-страницы с использованием библиотеки Python Aspose.HTML. Он начинается с определения и создания выходного каталога для хранения файлов SVG. Затем код загружает HTML-документ по указанному URL-адресу. Он собирает все элементы <img> из документа, извлекает их атрибуты src и отфильтровывает URL-адреса, оканчивающиеся на “.svg”, чтобы изолировать изображения SVG. Код преобразует эти относительные URL-адреса в абсолютные URL-адреса, используя базовый URI документа. Для каждого абсолютного URL-адреса SVG он отправляет сетевой запрос на получение изображения SVG. Если запрос успешен, он сохраняет файл SVG в локальной файловой системе, используя имя файла, полученное из пути URL-адреса.

 1import os
 2from aspose.html import *
 3from aspose.html.net import *
 4
 5# Define the output directory
 6output_dir = "output/svg/"
 7os.makedirs(output_dir, exist_ok=True)
 8
 9# Open the document you want to extract external SVGs from
10document = HTMLDocument("https://products.aspose.com/html/net/")
11
12# Collect all image elements
13images = document.get_elements_by_tag_name("img")
14
15# Create a distinct collection of relative image URLs
16urls = set(element.get_attribute("src") for element in images)
17
18# Filter out non-SVG images
19svg_urls = [url for url in urls if url.endswith(".svg")]
20
21# Create absolute SVG image URLs
22abs_urls = [Url(url, document.base_uri) for url in svg_urls]
23
24for url in abs_urls:
25    # Create a request message
26    request = RequestMessage(url)
27
28    # Extract SVG
29    response = document.context.network.send(request)
30
31    # Check whether the response is successful
32    if response.is_success:
33        # Save SVG image to the local file system
34        file_path = os.path.join(output_dir, os.path.basename(url.pathname))
35        with open(file_path, 'wb') as file:
36            file.write(response.content.read_as_byte_array())

Заключение

Библиотека Aspose.HTML for Python via .NET предлагает надежные возможности для программного извлечения изображений SVG с веб-сайтов, включая как встроенные, так и внешние SVG. Чтобы извлечь встроенные изображения SVG, используйте конструктор HTMLDocument(Url) для загрузки документа, примените метод get_elements_by_tag_name("svg") для сбора всех элементов SVG, а затем используйте свойство outer_html для сохранения каждого изображения SVG. локально. Для внешних SVG используйте аналогичный подход, собирая элементы <img>, фильтруя файлы SVG, создавая абсолютные URL-адреса и сохраняя изображения.

Эти примеры Python демонстрируют, как автоматизировать извлечение изображений SVG с веб-страниц. Это полезно для архивирования или анализа веб-контента, а также для дизайнеров и разработчиков, желающих получать файлы SVG с сайтов, не углубляясь в исходный код.

Загрузите библиотеку Aspose.HTML for Python via .NET, чтобы успешно, быстро и легко манипулировать вашими HTML-документами. Библиотека Python может создавать, изменять, извлекать данные, конвертировать и отображать HTML-документы без необходимости использования внешнего программного обеспечения. Она поддерживает популярные форматы файлов, такие как EPUB, MHTML, XML, SVG и Markdown, а также может выполнять рендеринг в форматах файлов PDF, DOCX, XPS и изображений.

Aspose.HTML предлагает Веб-приложения HTML, которые представляют собой онлайн-коллекцию бесплатных конвертеров, слияний, инструментов SEO, генераторов HTML-кода, инструментов URL, средств проверки доступности веб-страниц и многого другого. Приложения работают в любой операционной системе с веб-браузером и не требуют установки дополнительного программного обеспечения. Легко конвертируйте, объединяйте, кодируйте, генерируйте HTML-код, извлекайте данные из Интернета или анализируйте веб-страницы для SEO, где бы вы ни находились. Используйте нашу коллекцию веб-приложений HTML для выполнения повседневных задач и сделайте свой рабочий процесс безупречным!

Текст “Веб-приложения HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.