Извлечь 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 с веб-сайта:
- Используйте конструктор HTMLDocument(Url), чтобы создать экземпляр класса HTMLDocument и передать ему URL-адрес веб-сайта, с которого вы хотите извлечь встроенные изображения SVG.
- Используйте метод
get_elements_by_tag_name(“svg”) для сбора всех элементов
<svg>. Этот метод возвращает список элементов<svg>, встроенных в HTML. - Переберите список элементов
<svg>и сохраните каждый SVG в локальной файловой системе. - Используйте свойство
outer_html, чтобы получить полное HTML-представление элемента
<svg>. Каждый<svg>сохраняется с уникальным именем файла, чтобы избежать перезаписи.
Следующий код Python демонстрирует простой подход к извлечению встроенных изображений SVG с веб-страницы с использованием библиотеки Python Aspose.HTML:
1# Extract inline SVGs from website using Python
2
3import os
4import aspose.html as ah
5
6# Prepare the output directory
7output_dir = "output/svg/" # Change this to your actual output directory
8os.makedirs(output_dir, exist_ok=True)
9
10# Open a document you want to extract inline SVG images from
11with ah.HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/") as document:
12 # Collect all inline SVG images
13 images = document.get_elements_by_tag_name("svg")
14
15 for i, image in enumerate(images):
16 # Save every SVG image to a local file system
17 with open(os.path.join(output_dir, f"{i}.svg"), 'w', encoding='utf-8') as file:
18 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-адреса.
1# Download external SVG images from HTML using Python
2
3import os
4import aspose.html as ah
5import aspose.html.net as ahnet
6
7# Define the output directory
8output_dir = "output/svg/"
9os.makedirs(output_dir, exist_ok=True)
10
11# Open the HTML document from a URL
12document = ah.HTMLDocument("https://products.aspose.com/html/python-net/")
13
14# Collect all <img> elements
15images = document.get_elements_by_tag_name("img")
16
17# Create a distinct collection of relative image URLs
18urls = set(img.get_attribute("src") for img in images)
19
20# Filter only SVG images
21svg_urls = [url for url in urls if url.endswith(".svg")]
22
23# Convert relative URLs to absolute using Url from aspose.html
24abs_urls = [ah.Url(url, document.base_uri) for url in svg_urls]
25
26for url in abs_urls:
27 # Create a network request for the SVG
28 request = ahnet.RequestMessage(url.href)
29
30 # Send request to fetch the SVG
31 response = document.context.network.send(request)
32
33 # Check if request succeeded
34 if response.is_success:
35 # Determine local file path
36 file_path = os.path.join(output_dir, os.path.basename(url.pathname))
37
38 # Save SVG to local filesystem
39 with open(file_path, "wb") as f:
40 f.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 и изображений.
Вы можете загрузить полные примеры и файлы данных с GitHub.
Aspose.HTML предлагает Веб-приложения HTML, которые представляют собой онлайн-коллекцию бесплатных конвертеров, слияний, инструментов SEO, генераторов HTML-кода, инструментов URL, средств проверки доступности веб-страниц и многого другого. Приложения работают в любой операционной системе с веб-браузером и не требуют установки дополнительного программного обеспечения. Легко конвертируйте, объединяйте, кодируйте, генерируйте HTML-код, извлекайте данные из Интернета или анализируйте веб-страницы для SEO, где бы вы ни находились. Используйте нашу коллекцию веб-приложений HTML для выполнения повседневных задач и сделайте свой рабочий процесс безупречным!
