私はかなり新しいPowershellに新しく、個人的なもののためにそれを使用しています。私は、ウェブサイトから特定の情報を引き出して家族に電子メールを送信することを実験してきました。フォーラムを読むと、Invoke-WebRequest
コマンドレットを使用するとかなり良い状態になりましたが、すぐにページが読み込まれたときに動的に構築されたコンテンツにアクセスできないという制限がありました。Powershell - IEオブジェクトからWebコンテンツを取得する方法を見つけることができません
これらのフォーラムのおかげで、私はIEオブジェクトとデータを取得する方法を発見しました。私は1つのウェブサイトで運が良かったが、もう1つは同じように動作しなかった。それを理解するための少しの助けを求めて。
私の興味の対象が強調表示されたページの検査コードのスニペットです。以下は
私はそのテキスト文字列を抽出しようとしていたコードです。私は多くの反復とアプローチを成功させずに試みました。しかし、奇妙なことに、$ie.Document
オブジェクトには "body"オブジェクトがあると思われますが、アクセスしようとするとnullオブジェクトエラーが発生します。 Documentオブジェクト自体にgetElementsByTagName
メソッドがあることに気がついたので、私はそれを試みました。それはgetElementsByClassName
メソッドを持っていません。
私がロードしているURLは「https」なので、これが問題の原因になっているかどうかは疑問です。提案は高く評価されました!私はHTMLの周囲のチャンクを得ることができれば、私は欲しいものを得るためにいくつかの文字列操作をしても問題ありません。
# Create IE object and load URL
$WeatherURL = "https://weather.com/weather/today/l/77630"
$ie = New-Object -comobject "InternetExplorer.Application"
$ie.visible = $true
$ie.navigate($WeatherURL)
# Wait for the page to load
while ($ie.Busy -eq $true -Or $ie.ReadyState -ne 4) {Start-Sleep 2}
$Doc = $ie.Document
$Weather0 = $Doc.getElementsByTagName('span') `
| ?{$_.getAttribute('class') -eq "today-wx-descrip"} | Select-Object -First 1
あなたは正しいですが、これをハッキングしながら私の繰り返しの1つで、私はそれを修正しました。 OPのコードスニペットを置き換えました。これが実行されると、私は不十分なメモリエラーを取得します。 – tkcas