我可以使用以下命令下载单个独立的 HTML 文件:
wget https://www.bbc.co.uk/news/articles/c99rgj0xkryo
但 wget 会将文件另存为index.html
而不是Nation falls silent as King leads Remembrance ceremony.html
。如何让 wget 使用页面标题?
在这种情况下,我并不关心离线文件的链接是否被破坏。我只关心下载独立的页面。
我在:
- Windows 11
- 普什尔 7.4
旗帜已
-O
悬挂wget
。这是一个自动使用标题作为文件名的脚本。
你需要https://www.html-tidy.org。它位于大多数发行版的存储库中。
经过几次测试,我注意到页面的格式有时会
</title>
出现在下一行,但有时却不是。因此,我添加了一个检查来处理这两种情况。另存为:
html_to_title.sh
更改模式可执行文件:
chmod +x html_to_title.sh
用法:
./html_to_title.sh www.example.com
我已经很久没有使用 Windows 了,这可能已经过时了,而且我也没有办法测试它,但这里有一个尝试过的 powershell 版本。
用法:
.\Get-PageTitle.ps1 "http://example.com"
就 Windows 而言,这是我能做的最好的事情。
使用 PowerShell 5,获取标题变得更加简单:
但是,
ParsedHtml
由于请求总是使用,因此已从 PowerShell 7 中基本删除-UseBasicParsing
。因此您需要使用外部库或解决方法,直到他们重新实现它。然后,为了清理文件名,有一些辅助函数可以覆盖所有字符,例如
GetInvalidFileNameChars()
可以在这样的函数中使用:来源。