Edite arquivos HTML a partir da linha de comando

1

Estou procurando uma maneira de editar arquivos HTML na linha de comando, semelhante a sed ou awk , mas usando expressões de caminho semelhantes a jq ou filhote . Em particular, novas linhas, espaços em branco e outros detalhes de formatação não devem importar.

Então, gostaria de dizer algo como "excluir tudo entre <body> e primeiro <p> tag depois e substituí-lo pelo texto" ou "substituir cada <b> ... </b> por <p font-style=italic> ... </p> , mantendo o texto entre ". O restante do documento deve permanecer inalterado.

Uma biblioteca para, digamos, Perl, Python ou Haskell, onde eu posso fazer isso facilmente com algumas linhas, também estaria bem (mas eu preferiria uma ferramenta de linha de comando).

Antecedentes: eu quero usar isso para limpar muitos arquivos do epub com formatação inadequada, tags de linguagem incorreta etc.

    
por dirkt 07.03.2017 / 08:53

1 resposta

0

Eu não sei de nada que possa fazer o que você quer e seria muito trabalhoso construir algo. Para começar, você teria que construir um compilador, usando yacc ou algo assim, para analisar seus comandos e então passá-los para outro código para realmente fazer as transformações.

XLST pode funcionar, mas duvido. Ele está no topo do XML e HTML é uma linguagem de marcação muito irregular para caber dentro dessa sintaxe rígida: especialmente se você começar a colocar o CSS em cima dele.

Eu usaria a biblioteca Perl HTML :: Parser (ou talvez um de seus amigos na árvore de módulos HTML se eles tem uma ferramenta especializada para uma tarefa comum sua). Ele analisa documentos HTML em uma pequena árvore de banco de dados interna e, em seguida, você pode manipulá-los e descartá-los. Eu uso o tempo todo para fazer coisas como: livrar-se de todas as tags e conteúdos do iframe ; livrar-se de todas tags HTML, mas imprima algo próximo da formatação pretendida em texto simples; e realmente complexos screen scraper engines.

É muito simples de usar e faz todo o trabalho pesado para você. Veja a página do CPAN para exemplos. A distribuição também vem com mais exemplos para fazer coisas como remover certas tags / elementos e / ou atributos.

Lembre-se que na época da Idade da Pedra Perl dominava a Web e estava mais preocupado em lançar HTML para que os Perl Monks estivessem aperfeiçoando suas ferramentas de HTML por décadas.

    
por 17.05.2017 / 11:07