PowerShell7でHTMLからテキストを抽出する。

コンピュータ

HTMLファイルのテキスト部分を抽出して読み上げることが出来ないか模索してみます。

PowerHTMLモジュールのインストール

Install-Module -Name PowerHTML

コマンド

$html = Invoke-WebRequest "https://maywork.net/computer/ubuntu22-04-automatic1111-web-ui-install/" | ConvertFrom-Html
$html.SelectNodes("//title").innerText + "`n`n" + $html.SelectNodes("//body").innerText
Ubuntu22.04でAUTOMATIC1111版Stable Diffusion WebUIをインストールした話 | 迷惑堂本舗

ショートカットツールc#.NET_Framework.NETWPFWinFormsmonoasp.netxamlMVVMOpenCvSharpコンピュータ自作PCGoDeskMeetdeskminiExcelGIMPjavascriptOpenCVpowershellpythonthinkpad生活家電自動車掃除洗濯防災便利グッツ健康その他行政お金T君ubuntuショートカ ットツールc#.NET_Framework.NETWPFWinFormsmonoasp.netxamlMVVMOpenCvSharpコンピュータ自作PCGoDeskMeetdeskminiExcelGIMPjavascriptOpenCVpowershellpythonthinkpad生活家電自動車掃除洗濯防災便利グッツ健康その他行政お金T君ubuntuUbuntu22.04でAUTOMATIC1111版Stable Diffusion WebUIをインストールした話コンピュータubuntuTwitterはてブ2Pocket02023.03.18画像生成AIのStable DiffusionをWebブラウザから実行する、WebユーザーインターフェイスAUTOMATIC1111をインストールしたいと思います。事前にNVIDIAグ ラフィックドライバーとCUDA Toolkitをインストールしてあります。Ubuntu22.04にNvidia RTX3060のドライバーをインストールした  ... 省略 ...

titleとbody部分のinnerTextを取得することで文字列化することが出来ました。ただ、文章としては余分な情報も多く(ページの作りが悪いのが原因)改行も無いので人間が読むには結構苦痛な感じです。

テキストの読み上げ

$html = Invoke-WebRequest "https://maywork.net/computer/memory-upgrade-ddr4-64gb/" | ConvertFrom-Html
$html.SelectNodes("//div[@class=""entry-content cf""]").innerText | % -Begin { $s = New-Object -com SAPI.SpVoice } -Process { $s.Speak($_) }

記事の本文が読み上げられました。
余分な情報を排除するためにclassが”entry-content cf”のinnerTextのみを取り出しSAPI.SpVoiceでしゃべらせています。
筆者の文章の文法が怪しいこともありますが、漢字の読み上げミスが目立ちます。これが上手く行けば、ネット小説などを読み上げてオーディオブックが出来上がるかと思いましたが、残念ながら簡単にはいかないようです。

コメント