Posso baixar um único arquivo HTML independente com:
wget https://www.bbc.co.uk/news/articles/c99rgj0xkryo
mas wget salvará o arquivo como index.html
em vez de Nation falls silent as King leads Remembrance ceremony.html
. Como faço para que wget use o título da página?
Neste caso, não estou preocupado em quebrar links para os arquivos offline. Estou preocupado apenas em baixar páginas autônomas.
Estou em:
- Windows 11
- pwsh 7.4
A bandeira está
-O
hasteadawget
.Aqui está um script para usar automaticamente o título como nome do arquivo.
Você precisará de https://www.html-tidy.org . Ele está no repositório da maioria das distribuições.
Depois de alguns testes, notei que a formatação da página resulta em
</title>
estar na próxima linha, mas às vezes não está. Então, adicionei uma verificação para lidar com ambos os cenários.Salvar como:
html_to_title.sh
Alterar modo executável:
chmod +x html_to_title.sh
Uso:
./html_to_title.sh www.example.com
Não uso o Windows há tanto tempo que isso pode estar desatualizado, e não tenho como testá-lo, mas aqui está uma tentativa de versão do PowerShell.
Uso:
.\Get-PageTitle.ps1 "http://example.com"
É o melhor que posso fazer quando se trata do Windows.
Com o PowerShell 5 é muito mais simples obter o título:
No entanto,
ParsedHtml
foi basicamente removido do PowerShell 7, pois as solicitações sempre usam-UseBasicParsing
. Então você precisa usar biblioteca externa ou soluções alternativas até que eles talvez o reimplementem.Então, para limpar nomes de arquivos, existem algumas funções auxiliares para cobrir todos os caracteres, por exemplo,
GetInvalidFileNameChars()
que podem ser usadas em uma função como esta:Fonte .