Extraer imágenes de un sitio web en Python

En este artículo, exploramos cómo extraer varios tipos de imágenes de sitios web utilizando Aspose.HTML for Python via .NET. Al aprovechar la biblioteca de Python, puede descargar imágenes de manera eficiente desde un sitio web sin necesidad de realizar una búsqueda manual. Descubra cómo automatizar el proceso de extracción de imágenes y optimizar su flujo de trabajo con facilidad. ¡Comencemos a extraer imágenes mediante programación!

Extraer imágenes del sitio web

La mayoría de las imágenes en un documento HTML se representan mediante el elemento <img>. A continuación se muestra un ejemplo de cómo utilizar Aspose.HTML for Python via .NET para buscar imágenes especificadas por este elemento. Entonces, para descargar imágenes del sitio web, debes seguir algunos pasos:

  1. Inicialice un objeto HTMLDocument usando el constructor HTMLDocument(Url) y proporcione la URL de la página web de la que desea extraer imágenes.
  2. Llame al método get_elements_by_tag_name(“img”) en el documento para recuperar todos los elementos <img>. Este método devuelve una colección de todos los elementos <img> que se encuentran en el documento HTML.
  3. Extraiga URL de imágenes únicas iterando a través de los elementos <img> recopilados y accediendo a su atributo src usando el método get_attribute(“src”). Almacene estas URL en un conjunto para asegurarse de que no haya duplicados.
  4. Cree URL de imágenes absolutas utilizando la clase Url y la propiedad base_uri de la clase HTMLDocument para asegurarse de que tengan el formato correcto para las solicitudes.
  5. Para cada URL de imagen absoluta, cree un objeto RequestMessage y utilícelo para enviar una solicitud de red para recuperar la imagen.
  6. Utilice el método context.network.send(request) del documento para enviar la solicitud. La respuesta se verifica para garantizar que haya sido exitosa.
  7. Analice la URL de la imagen para obtener el nombre del archivo, luego guarde la imagen en su sistema de archivos local escribiendo el contenido de la imagen en un archivo en el directorio de salida designado.
 1import os
 2from aspose.html import *
 3from aspose.html.net import *
 4
 5# Prepare the output directory
 6output_dir = "output/"
 7os.makedirs(output_dir, exist_ok=True)
 8
 9
10# Open a document you want to extract images from
11with HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/") as document:
12    # Collect all <img> elements
13    images = document.get_elements_by_tag_name("img")
14
15    # Create a distinct collection of relative image URLs
16    urls = set(element.get_attribute("src") for element in images)
17
18    # Create absolute image URLs
19    abs_urls = [Url(url, document.base_uri) for url in urls]
20
21    for url in abs_urls:
22        # Create an image request message
23        request = RequestMessage(url)
24
25        # Extract image
26        response = document.context.network.send(request)
27
28        # Check whether a response is successful
29        if response.is_success:
30            # Parse the URL to get the file name
31            file_name = os.path.basename(url.pathname)
32
33            # Save image to the local file system
34            with open(os.path.join(output_dir, file_name), 'wb') as file:
35                file.write(response.content.read_as_byte_array())

Nota: Es esencial cumplir con las leyes de derechos de autor y obtener el permiso adecuado antes de utilizar imágenes guardadas con fines comerciales. No apoyamos la extracción de datos ni el uso de archivos de otras personas con fines comerciales sin su permiso.

Extraer iconos

Los iconos son un tipo de imagen en documentos HTML que se especifican mediante elementos <link> con el atributo rel establecido en icon. Veamos cómo extraer íconos de un sitio web usando Aspose.HTML for Python via .NET:

  1. 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 iconos.
  2. Utilice el método get_elements_by_tag_name(“link”) para recopilar todos los elementos <link>.
  3. Utilice el método get_attribute(“rel”) para recuperar el valor del atributo rel de un elemento HTML. Filtre estos elementos para conservar solo aquellos en los que el atributo rel sea igual a icon, que normalmente se utilizan para definir iconos.
  4. Extraiga el atributo href de cada enlace de icono para obtener las URL relativas. Convierta estas URL relativas en URL absolutas utilizando el URI base del documento.
  5. Para cada URL de imagen absoluta, cree un objeto RequestMessage y utilícelo para enviar una solicitud de red para recuperar la imagen.
  6. Utilice el método context.network.send(request) del documento para enviar la solicitud. La respuesta se verifica para garantizar que haya sido exitosa.
  7. Si la respuesta indica éxito, guarde el archivo de icono localmente en el directorio de salida predefinido.
 1import os
 2from aspose.html import *
 3from aspose.html.net import *
 4
 5# Define output directory
 6output_dir = "output/icons/"
 7os.makedirs(output_dir, exist_ok=True)
 8
 9# Open a document you want to extract icons from
10document = HTMLDocument("https://docs.aspose.com/html/python-net/message-handlers/")
11
12# Collect all <link> elements
13links = document.get_elements_by_tag_name("link")
14
15# Leave only "icon" elements
16icons = [link for link in links if link.get_attribute("rel") == "icon"]
17
18# Create a distinct collection of relative icon URLs
19urls = {icon.get_attribute("href") for icon in icons}
20
21# Create absolute icon URLs
22abs_urls = [Url(url, document.base_uri) for url in urls]
23
24for url in abs_urls:
25    # Create a request message
26    request = RequestMessage(url)
27
28    # Extract icon
29    response = document.context.network.send(request)
30
31    # Check whether the response is successful
32    if response.is_success:
33        # Save icon to a 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())

Puede utilizar estos ejemplos de Python para automatizar la extracción de todas las imágenes de un sitio web. Esto es valioso para diversas tareas como archivar, investigar, analizar contenido web o cualquier otra aplicación de uso personal. También es ideal para diseñadores y desarrolladores web que desean recuperar imágenes de sitios.

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, comprobadores 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.

Texto “Aplicaciones web HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.