EXTRACT_IMAGES - Extração de Imagens do HTML
O que é este Node?
O EXTRACT_IMAGES é o node responsável por extrair todas as imagens (src) presentes em um documento HTML, incluindo imagens de tags <img> e background-images em CSS inline.
Por que este Node existe?
Imagens podem estar em diferentes formatos no HTML. O EXTRACT_IMAGES existe para:
- Catalogação: Listar todas as imagens de uma página
- Download: Preparar lista de imagens para download
- Validação: Verificar imagens quebradas
- Análise: Contar e analisar uso de imagens
Como funciona internamente?
Quando extractImages está habilitado, o sistema:
- Busca tags
<img>: Encontra todos os elementos img com src - Extrai background images: Procura por background-image em style inline
- Remove duplicatas: Usa Set para URLs únicas
- Retorna array: Lista de URLs de imagens
Código interno (html-parser-executor.service.ts:425-447):
private extractImages($: CheerioAPI): string[] {
const images: string[] = [];
$('img[src]').each((index, element) => {
const src = $(element).attr('src');
const alt = $(element).attr('alt') || '';
if (src) {
images.push(src);
}
});
// Also extract background images from CSS
$('[style*="background-image"]').each((index, element) => {
const style = $(element).attr('style') || '';
const match = style.match(/background-image:\s*url\(['"]?([^'"]+)['"]?\)/);
if (match && match[1]) {
images.push(match[1]);
}
});
// Remove duplicates and return
return [...new Set(images)];
}
Quando você DEVE usar este Node?
Use extractImages sempre que precisar de listar todas as imagens de um HTML:
Casos de uso
- Image scraper: "Baixar todas as imagens de uma galeria"
- Content analysis: "Contar imagens em artigos"
- SEO audit: "Verificar alt text de imagens"
- Backup: "Listar imagens para backup"
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| inputVariable | string | Sim | Variável com HTML |
| parseMode | string | Sim | Qualquer modo |
| extractImages | boolean | Sim | Deve ser true |
| metadataVariable | string | Sim | Variável para imagens |
| outputVariable | string | Não | Variável para conteúdo |
Exemplo: Baixar Imagens de Galeria
Objetivo: Extrair URLs de todas as imagens de uma galeria
JSON para Importar
{
"name": "Extrator de Imagens de Galeria",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Galeria HTML",
"parameters": {
"variableName": "galeria_html",
"variableValue": "<div class='gallery'><img src='https://example.com/img1.jpg' alt='Foto 1'><img src='https://example.com/img2.jpg' alt='Foto 2'><div style='background-image: url(https://example.com/bg.jpg)'></div></div>"
}
}
},
{
"id": "parser_1",
"type": "html_parser",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Extrair Imagens",
"parameters": {
"inputVariable": "galeria_html",
"parseMode": "text",
"extractImages": true,
"outputVariable": "texto",
"metadataVariable": "meta"
}
}
},
{
"id": "loop_1",
"type": "loop",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Para cada imagem",
"parameters": {
"items": "{{meta.images}}",
"itemVariable": "img_url"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Processar",
"parameters": {
"message": "📸 Processando: {{img_url}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "parser_1" },
{ "source": "parser_1", "target": "loop_1" },
{ "source": "loop_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: 📸 Processando: https://example.com/img1.jpg
Sistema: 📸 Processando: https://example.com/img2.jpg
Sistema: 📸 Processando: https://example.com/bg.jpg
Resposta do Node
{
"success": true,
"data": {
"parsed_content": "...",
"metadata": {
"images": ["img1.jpg", "img2.jpg", "bg.jpg"]
}
}
}
Boas Práticas
✅ SIM: - Use para criar image scrapers - Combine com LOOP para processar cada imagem - Valide URLs antes de baixar - Use para auditoria de conteúdo
❌ NÃO: - Não baixe muitas imagens sem controle - Não confie que todas as URLs são válidas - Não esqueça de tratar URLs relativas
Dicas
💡 Dica 1: Extrai tanto <img src> quanto background-image do CSS inline
💡 Dica 2: URLs são retornadas como encontradas (relativas ou absolutas)
💡 Dica 3: Duplicatas são removidas automaticamente
Próximo Node
→ EXTRACT_LINKS - Extrai links do HTML → PARSE_CUSTOM - Extrai elementos específicos