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:
- 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. - 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. - Extraiga URL de imágenes únicas iterando a través de los elementos
<img>
recopilados y accediendo a su atributosrc
usando el método get_attribute(“src”). Almacene estas URL en un conjunto para asegurarse de que no haya duplicados. - 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. - Para cada URL de imagen absoluta, cree un objeto RequestMessage y utilícelo para enviar una solicitud de red para recuperar la imagen.
- Utilice el método context.network.send(request) del documento para enviar la solicitud. La respuesta se verifica para garantizar que haya sido exitosa.
- 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:
- 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. - Utilice el método
get_elements_by_tag_name(“link”) para recopilar todos los elementos
<link>
. - 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 atributorel
sea igual aicon
, que normalmente se utilizan para definir iconos. - 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. - Para cada URL de imagen absoluta, cree un objeto RequestMessage y utilícelo para enviar una solicitud de red para recuperar la imagen.
- Utilice el método context.network.send(request) del documento para enviar la solicitud. La respuesta se verifica para garantizar que haya sido exitosa.
- 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.