Extraer imágenes de un sitio web – Ejemplos Java
Si eres desarrollador web, diseñador gráfico, investigador, periodista, estudiante o simplemente estás trabajando en un proyecto personal, probablemente necesites imágenes y la capacidad de recopilarlas de sitios web. Guardar imágenes manualmente -copiando cada URL y descargándolas una a una- puede llevar mucho tiempo y ser ineficaz. Sin embargo, puede utilizar la biblioteca Aspose.HTML for Java library para automatizar este proceso y extraer imágenes de un sitio web mediante programación.
En este artículo se explica cómo extraer diferentes tipos de imágenes de un sitio web mediante programación utilizando Java. Con Aspose.HTML for Java, puede crear fácilmente una herramienta que analice una página HTML, identifique las fuentes de las imágenes y las descargue. Se trata de una potente solución para cualquiera que necesite recopilar imágenes para su análisis, archivo o creación de contenidos, sin la molestia de hacerlo manualmente.
Extraer imágenes de un sitio web
La mayoría de las imágenes de un documento HTML se representan mediante el elemento <img>
. El siguiente fragmento de código demuestra cómo utilizar Aspose.HTML for Java para encontrar imágenes especificadas por este elemento. Por lo tanto, para descargar imágenes de un sitio web, debe seguir los siguientes pasos:
- Utilice el constructor
HTMLDocument(Url) para crear una instancia de
HTMLDocument
pasando la URL de la página web que desea procesar. - Llama al método
getElementsByTagName(“img”) para recuperar todos los elementos
<img>
del documento. El método devuelve una colección de elementos<img>
presentes en la página. - Recorre los elementos
<img>
y utiliza el método getAttribute(“src”) para obtener el valor del atributosrc
de cada imagen. Cadasrc
se añade al conjuntourls
. - Utilice la clase
Url junto con la propiedad
BaseURI
del documento para convertir las rutas relativas de las imágenes en URLs absolutas. - Para cada URL de imagen absoluta, cree una petición utilizando el constructor
RequestMessage(url) y envíela utilizando
document.getContext().getNetwork().send(request)
. Esto devuelve unResponseMessage
. - Si la respuesta indica éxito, extraiga los datos de la imagen usando
response.getContent().readAsByteArray()
y guárdelos en su sistema de archivos local usandoFileHelper.writeAllBytes()
.
1// Open a document you want to download images from
2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");
3
4// Collect all <img> elements
5HTMLCollection images = document.getElementsByTagName("img");
6
7// Create a distinct collection of relative image URLs
8Iterator<Element> iterator = images.iterator();
9java.util.Set<String> urls = new HashSet<>();
10for (Element e : images) {
11 urls.add(e.getAttribute("src"));
12}
13
14// Create absolute image URLs
15java.util.List<Url> absUrls = urls.stream()
16 .map(src -> new Url(src, document.getBaseURI()))
17 .collect(Collectors.toList());
18
19// foreach to while statements conversion
20for (Url url : absUrls) {
21 // Create an image request message
22 final RequestMessage request = new RequestMessage(url);
23
24 // Extract image
25 final ResponseMessage response = document.getContext().getNetwork().send(request);
26
27 // Check whether a response is successful
28 if (response.isSuccess()) {
29 String[] split = url.getPathname().split("/");
30 String path = split[split.length - 1];
31
32 // Save file to a local file system
33 FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
34 }
35}
Esta solución sencilla y eficaz le permite automatizar el proceso de extracción de imágenes, ahorrándole un tiempo muy valioso.
Nota: Respete siempre las leyes de derechos de autor y asegúrese de que dispone de los permisos o licencias necesarios antes de utilizar las imágenes guardadas con fines comerciales. No apoyamos la extracción y el uso de contenidos de fuentes de terceros con fines comerciales sin la debida autorización.
Extraer iconos de un sitio web
Los iconos en los documentos HTML se definen normalmente utilizando elementos <link>
con el atributo rel="icon"
. Para extraer iconos de un sitio web utilizando Aspose.HTML for Java, siga estos pasos:
- Cargue la página web utilizando el constructor HTMLDocument(Url), pasando la URL del sitio web que desea analizar.
- Utilice el método
getElementsByTagName(“link”) para recoger todos los elementos
<link>
del documento. - Filtre los resultados para incluir sólo los elementos en los que el atributo
rel
esté configurado como"icon"
, ya que éstos definen los enlaces de icono. - Extrae las URL relativas llamando a
getAttribute(“href”) en cada elemento
<link>
filtrado. - Crear URLs absolutas de iconos utilizando la clase
Url y el método
getBaseURI()
deHTMLDocument
. - Envía una petición para cada icono utilizando la clase
RequestMessage y el método
document.getContext().getNetwork().send()
. - Compruebe la respuesta, y si tiene éxito, guarde el icono localmente usando
FileHelper.writeAllBytes()
. Como resultado, todos los iconos del sitio web referenciados en el HTML serán descargados y guardados en su sistema de archivos local.
1// Open a document you want to download icons from
2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
3
4// Collect all <link> elements
5HTMLCollection links = document.getElementsByTagName("link");
6
7// Leave only "icon" elements
8java.util.Set<Element> icons = new HashSet<>();
9for (Element link : links) {
10 if ("icon".equals(link.getAttribute("rel"))) {
11 icons.add(link);
12 }
13}
14
15// Create a distinct collection of relative icon URLs
16java.util.Set<String> urls = new HashSet<>();
17for (Element icon : icons) {
18 urls.add(icon.getAttribute("href"));
19}
20
21// Create absolute image URLs
22java.util.List<Url> absUrls = urls.stream()
23 .map(src -> new Url(src, document.getBaseURI()))
24 .collect(Collectors.toList());
25
26// foreach to while statements conversion
27for (Url url : absUrls) {
28 // Create a downloading request
29 final RequestMessage request = new RequestMessage(url);
30
31 // Extract icon
32 final ResponseMessage response = document.getContext().getNetwork().send(request);
33
34 // Check whether a response is successful
35 if (response.isSuccess()) {
36 String[] split = url.getPathname().split("/");
37 String path = split[split.length - 1];
38
39 // Save file to a local file system
40 FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
41 }
42}
Puede utilizar estos ejemplos Java para automatizar la extracción de todas las imágenes de un sitio web, lo que puede ser útil para tareas como archivar, investigar, analizar contenido web o cualquier otra aplicación de uso personal. Además, esto es ideal para diseñadores y desarrolladores web que deseen extraer imágenes de sitios sin bucear en el código fuente.
Aspose.HTML ofrece un conjunto de Aplicaciones Web HTML gratuitas en línea, que incluyen conversores, fusiones, herramientas SEO, generadores de código HTML, utilidades URL y mucho más. Estas herramientas basadas en navegador funcionan en cualquier sistema operativo y no requieren instalación de software adicional. Si necesita convertir o combinar archivos, extraer datos web, generar código HTML o analizar páginas para SEO, puede hacerlo todo directamente en la web. Agilice sus tareas diarias y aumente su productividad con nuestras sencillas aplicaciones web HTML, en cualquier momento y lugar.