Buscar/Crie um extrator do conteúdo principal de páginas web e depure o conteúdo perdido

Crie um extrator do conteúdo principal de páginas web e depure o conteúdo perdido

Use ao criar ou corrigir um extrator do texto principal de páginas web para navegador, servidor, CLI ou edge. A IA mantém a ordem da limpeza, registra cada remoção, bloqueia a injeção de scripts e comprova cada correção com um teste que falha primeiro.

Para usar estas regras de IA
## Faça o extrator funcionar igual em cada ambiente suportado Projete o extrator em torno de uma interface estável de documento, e não de uma implementação específica de navegador. Liste todos os ambientes compatíveis e suas restrições antes de alterar o comportamento compartilhado de análise. - As compilações para navegador podem usar o modelo nativo de documentos. - As compilações para servidor podem aceitar documentos criados por diferentes implementações do DOM e oferecer uma API assíncrona. - As compilações para linha de comando devem preservar a mesma semântica de extração e oferecer modos legíveis por máquina e orientados a texto. - Os ambientes de execução de borda podem fornecer a implementação de documento mais limitada e devem definir o nível mínimo de compatibilidade. - Os pontos de entrada dos pacotes devem oferecer o mesmo comportamento público, mesmo quando seus formatos de módulo forem diferentes. Mantenha os adaptadores de ambiente enxutos. Coloque análise, pontuação, normalização, sanitização e comportamento específico de elementos em camadas compartilhadas, a menos que uma limitação do ambiente de execução exija uma exceção explícita. ## Mantenha a ordem das etapas de limpeza e não a mude por um único site Trate a sequência de extração como um algoritmo ordenado, e não como um conjunto de funções de limpeza intercambiáveis. Cada etapa pode criar pressupostos usados pelas etapas posteriores. Use esta sequência como padrão: 1. Achate árvores de documento encapsuladas. 2. Resolva conteúdo transmitido em fluxo ou adiado. 3. Encontre o conteúdo principal automaticamente ou por meio de um seletor explícito. 4. Normalize estruturas que as regras de remoção poderiam ocultar ou descartar. 5. Converta avisos reconhecidos em uma representação semântica estável. 6. Remova mídias pequenas demais e elementos ocultos. 7. Remova blocos com pontuação baixa. 8. Aplique seletores exatos e parciais de elementos indesejados. 9. Remova textos padronizados repetidos e outros padrões de conteúdo. 10. Normalize o documento restante. 11. Resolva links relativos e locais de recursos. Documente por que uma etapa deve vir antes de outra sempre que a dependência não for evidente. Não reordene etapas compartilhadas para corrigir um único site até que um teste específico comprove que a nova ordem preserva todas as representações intermediárias necessárias. ## Use o registro de remoções para ver onde o conteúdo sumiu Forneça um modo de depuração que informe a raiz de conteúdo selecionada e cada remoção com sua etapa, seletor, motivo e texto representativo. O modo de depuração pode preservar atributos de diagnóstico e ignorar operações de achatamento da estrutura que apagariam as evidências. Quando o conteúdo esperado desaparecer: 1. Verifique o registro de remoções para encontrar o conteúdo ausente. 2. Desative uma etapa por vez para identificar a primeira que causa a perda. 3. Se um seletor for responsável, diferencie seletores exatos de seletores com correspondência parcial. 4. Ignore a detecção automática de conteúdo com um seletor explícito quando a raiz incorreta tiver sido escolhida. 5. Confirme que regiões protegidas de código ou texto pré-formatado estejam fora da remoção genérica. 6. Reative todas as etapas não relacionadas antes de aceitar a correção. Prefira as evidências da primeira transição incorreta a suposições baseadas no documento final. Não desative permanentemente uma limpeza ampla quando um seletor, uma ordem ou uma regra de elemento específica puder resolver o defeito. ## Trate o HTML da página como hostil e bloqueie a injeção de scripts Analise a marcação por meio de um auxiliar seguro de construção de documentos que não execute scripts nem carregue recursos. Nunca atribua marcação não confiável diretamente a um ponto de análise do navegador. - Remova esquemas de URL que executem scripts dos atributos de links e mídias. - Remova o conteúdo de origem de documentos incorporados em quadros. - Remova atributos de manipuladores de eventos. - Escape todos os valores provenientes da página antes de interpolá-los na marcação gerada. - Prefira a criação de nós e os definidores de atributos quando eles tornarem explícitas as exigências de escape. - Sanitize o resultado final como uma proteção adicional, e não como substituto de uma construção segura. Presuma que aspas controladas por invasores em URLs de mídia, textos alternativos, imagens de metadados e descrições podem encerrar um atributo e injetar outro. Todo extrator que gere marcação deve ter um teste adversarial de injeção de atributos. ## Comprove cada correção com uma página de teste mínima que falhe primeiro Para defeitos de extração, crie o menor documento de teste que ainda reproduza a falha e associe-o ao resultado esperado exato. Mantenha os exemplos de teste determinísticos e livres de identificadores pessoais ou específicos da fonte. - Substitua nomes reais, endereços de e-mail, URLs, identificadores de conta e textos reconhecíveis por marcadores genéricos. - Inclua somente a estrutura necessária para acionar a etapa da sequência que falha. - Para correções de segurança, inclua um atributo malicioso ou uma carga adversarial equivalente. - Confirme que o exemplo de teste falha antes de aplicar a correção. - Aplique a menor alteração de comportamento que faça o exemplo passar no teste. - Execute o teste específico e o conjunto compartilhado de testes de extração em todos os ambientes compatíveis. Um exemplo de teste que passa antes e depois da alteração da implementação não comprova que uma regressão foi corrigida. Se não for viável reverter a correção, construa o resultado esperado ou um controle específico para que o comportamento anterior continue demonstrando a falha. ## Teste as diferenças de DOM e empacotamento em cada ambiente Teste o comportamento nos limites em que as implementações de documento e os formatos de pacote diferem, mesmo quando o algoritmo compartilhado não mudar. - Converta coleções dinâmicas de elementos em matrizes estáticas antes de alterar o documento. - Verifique se utilitários nomeados continuam acessíveis quando um pacote expõe somente uma exportação padrão. - Teste adaptadores assíncronos de servidor separadamente dos adaptadores síncronos de navegador. - Teste o comportamento do ambiente de execução de borda por meio do limite real de solicitações, em vez de presumir equivalência com o navegador. - Verifique os modos textual e estruturado da linha de comando com o mesmo conjunto de exemplos de teste. - Mantenha soluções alternativas específicas do ambiente nos adaptadores e cubra cada uma com um teste específico de compatibilidade. Quando uma correção específica de um ambiente alterar o resultado compartilhado, trate-a como uma mudança de comportamento entre ambientes e valide todos os adaptadores compatíveis. Não permita que uma solução alternativa de empacotamento redefina silenciosamente o contrato público do extrator.