Extraer SVG del sitio web en Python
SVG es un formato vectorial diseñado para la Web y que se utiliza con frecuencia en documentos HTML. Su principal ventaja es su capacidad de escalar a cualquier tamaño sin perder calidad, lo que lo hace ideal para mantener la claridad visual en varios tamaños de pantalla. Más allá de su escalabilidad, SVG ofrece beneficios adicionales como programabilidad, un tamaño de archivo pequeño, opciones de estilo avanzadas e interactividad, todo lo cual mejora el atractivo visual y la funcionalidad de las páginas web. Para los diseñadores y desarrolladores, extraer imágenes SVG de un sitio web puede resultar un desafío, especialmente cuando los métodos estándar como hacer clic derecho para guardar o abrir la imagen no son efectivos.
Con Aspose.HTML for Python via .NET, puede extraer fácilmente imágenes SVG de un sitio web mediante programación. Esta biblioteca proporciona herramientas para manejar SVG en línea (inline SVG) y SVG externos (external SVG), agilizando el proceso de localización y extracción de estas imágenes. Nuestra biblioteca Python simplifica la obtención de SVG de sitios web y ofrece una alternativa más eficiente a los métodos de extracción manual.
Extraer SVG del sitio web – SVG en línea
Las imágenes SVG en línea (inline SVG) son elementos SVG <svg>
cuyo contenido describe la imagen. A diferencia de las imágenes SVG externas que están vinculadas mediante URL, los SVG en línea se incrustan directamente en el código HTML de una página web. Estos SVG integrados no se almacenan como archivos separados y, por lo tanto, requieren un manejo especial para acceder a ellos y guardarlos.
Para guardar imágenes SVG en línea de un sitio web, necesitaremos encontrar todos los elementos <svg>
en el documento HTML y extraer su contenido usando la propiedad outer_html
. Aquí hay una guía paso a paso para descargar imágenes SVG desde un sitio web:
- Utilice el constructor
HTMLDocument(Url)
para crear una instancia de la clase HTMLDocument y pásele la URL del sitio web del que desea extraer imágenes SVG en línea. - Utilice el método
get_elements_by_tag_name(“svg”) para recopilar todos los elementos
<svg>
. Este método devuelve una lista de elementos<svg>
incrustados en el HTML. - Repita la lista de elementos
<svg>
y guarde cada SVG en el sistema de archivos local. - Utilice la propiedad
outer_html para obtener la representación HTML completa del elemento
<svg>
. Cada<svg>
se guarda con un nombre de archivo único para evitar sobrescribirlo.
El siguiente código Python demuestra un enfoque sencillo para extraer imágenes SVG en línea de una página web utilizando la biblioteca de 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)
Nota: Algunos archivos SVG pueden estar protegidos por derechos de autor, así que consulte los términos de uso antes de extraerlos y usarlos. Por ejemplo, utilizar el logotipo de la empresa u otros archivos SVG extraídos en sus proyectos de diseño puede considerarse plagio y no debería hacerlo. Puede ser una buena idea pedir permiso a los propietarios del sitio web antes de utilizar sus archivos.
Extraer SVG del sitio web – SVG externo
SVG externo (external SVG) es un archivo SVG almacenado fuera de un documento HTML y cargado en el documento usando, por ejemplo, una etiqueta <img>
. La separación de archivos SVG de HTML hace posible reutilizar la misma imagen SVG en varios lugares sin duplicar el código, lo que hace que las páginas web sean más eficientes y fáciles de mantener.
Las imágenes SVG externas están representadas por el elemento <img>
, que a su vez también puede hacer referencia a otros tipos de imágenes, por lo que las imágenes SVG deben filtrarse más. El siguiente código Python automatiza el proceso de extracción de imágenes SVG de una página web utilizando la biblioteca de Python Aspose.HTML. Comienza definiendo y creando un directorio de salida para almacenar los archivos SVG. Luego, el código carga un documento HTML desde una URL especificada. Recopila todos los elementos <img>
del documento, recupera sus atributos src
y filtra las URL que terminan en “.svg” para aislar las imágenes SVG. El código convierte estas URL relativas en URL absolutas utilizando el URI base del documento. Para cada URL SVG absoluta, envía una solicitud de red para recuperar la imagen SVG. Si la solicitud tiene éxito, guarda el archivo SVG en el sistema de archivos local utilizando el nombre de archivo derivado de la ruta de acceso de la 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())
Conclusión
La biblioteca Aspose.HTML for Python via .NET ofrece capacidades sólidas para extraer mediante programación imágenes SVG de sitios web, abarcando SVG tanto en línea como externos. Para extraer imágenes SVG en línea, utilice el constructor HTMLDocument(Url)
para cargar el documento, aplique el método get_elements_by_tag_name("svg")
para reunir todos los elementos SVG y luego use la propiedad outer_html
para guardar cada imagen SVG en la zona. Para SVG externos, siga un enfoque similar recopilando elementos <img>
, filtrando archivos SVG, construyendo URL absolutas y guardando las imágenes.
Estos ejemplos de Python demuestran cómo automatizar la extracción de imágenes SVG de páginas web. Esto es útil para archivar o analizar contenido web y es beneficioso para diseñadores y desarrolladores que buscan extraer archivos SVG de sitios sin profundizar en el código fuente.
Descargue la biblioteca Aspose.HTML for Python via .NET para manipular con éxito, rapidez y facilidad sus documentos HTML. La biblioteca Python puede crear, modificar, extraer datos, convertir y renderizar documentos HTML sin necesidad de software externo. Admite formatos de archivos populares como EPUB, MHTML, XML, SVG y Markdown y puede renderizar en formatos de archivos PDF, DOCX, XPS e imágenes.
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, verificadores de accesibilidad web gratuitos y más. Las aplicaciones funcionan en cualquier sistema operativo con un navegador web y no requieren ninguna instalación de software adicional. Convierta, combine, codifique, genere código HTML, extraiga datos de la web o analice páginas web para SEO fácilmente, esté donde esté. Utilice nuestra colección de aplicaciones web HTML para realizar tareas cotidianas y hacer que su flujo de trabajo sea perfecto.