HTML para texto sem formatação não formatado?

4

Eu estou procurando uma maneira de converter uma pasta cheia de arquivos HTML para texto simples. O que eu quero é que os arquivos de texto sejam o máximo possível, como o que eu teria se eu tivesse selecionado todo o texto em um navegador da Web, copiado e colado o texto em um arquivo de texto simples.

NÃO, REALMENTE, QUERO TEXTO SIMPLES NÃO-FORMATO. Todas as soluções que estou encontrando produzem Markdown ou algo parecido, ou tentam preservar o layout, ou usam asteriscos e sublinhados para indicar a formatação do texto, ou preservam o conteúdo dos scripts no arquivo de saída, ou alguma coisa inteligente .

Tudo o que quero são as palavras escritas pelo autor na ordem em que o autor as escreveu. Eu nem me importo se o processamento converte todos os itens da lista em uma lista em um único parágrafo, ou até mesmo reduz o documento inteiro em um único parágrafo. Tudo isso é muito melhor do que dar-me qualquer coisa diferente da linguagem real contida no documento.

Eu adoraria um aplicativo de terminal ou script Python, mas vou pegar qualquer coisa que eu possa conseguir.

patrick-mooney
fonte
1
Dica: remova tudo entre < e >. Eu não sei sed, mas tenho certeza que poderia fazer isso.
gronostaj
1
Sim, sed pode fazê-lo e uma série de outras utilidades. Este é um arranjo básico para o conteúdo, eu acho, mas você não está dizendo se você quer as informações do cabeçalho - há tags que não aparecem no corpo, incluindo javascripts e não em tags. Você pode esclarecer que o que você quer apenas o conteúdo de texto de uma página?
Ele Munjeli
@ Ele Munjeli Sim, apenas o conteúdo do texto. (=
patrick-mooney
@gronostaj Isso me aproxima, mas não é perfeito: algumas tags (& lt; p & gt ;, & lt; br & gt;) são espaços em branco e devem ser convertidas em caracteres espaciais, porque separam palavras reais (como "Aqui estão algumas linhas & lt" br & gt; em uma citação "). OTOH, algumas tags (como & lt; script & gt; para scripts embutidos) são ou podem ser contêineres para itens que não contam como "texto simples".
patrick-mooney

Respostas:

3

html2text é um script Python que converte uma página de HTML em texto estruturado equivalente a Markdown. O html2text pode ser baixado e executado em qualquer sistema operacional que tenha o Python instalado. O programa html2text está nos repositórios de muitas distribuições do Linux e pode ser executado a partir da linha de comando da seguinte forma:

html2text -style pretty input.html  

Esse comando não apenas converte o arquivo html original em texto, mas também faz um trabalho muito bom de facilitar a leitura da saída de texto simples. Os títulos parecem cabeçalhos, as listas parecem listas, etc.

karel
fonte
Pensei que estava bem claro sobre não querer realmente nenhum caracter de formatação na saída, incluindo aqueles gerados pelo Markdown. = (
patrick-mooney
Toda a formatação da saída de texto sem formatação é feita automaticamente pelo html2text pelo uso muito inteligente do caractere de espaço (que não conta como formatação porque o caractere de espaço não é um caractere especial). Não há asteriscos de marcação ou caracteres sublinhados ou qualquer tipo de lixo assim. Além disso, se você não gosta do estilo bonito, você pode usar o -style compact opção em vez disso e se livrar dos recortes feitos com o caractere de espaço também.
karel
2

Usar w3m -dump <page.html>.

Ele lhe dará a representação de texto do arquivo html.

Na página man:

-dump  dump formatted page into stdout

Embora seja dito formatted, a saída é apenas texto simples.

NZD
fonte
1
lynx também suporta -dump.
TOOGAM
1
Sim, e o mesmo é possível com o bom e velho lince como este: lynx -dump -nolist -nomargins
Gombai Sándor