2016-09-14 8 views
0

私はかなり新しいPowershellに新しく、個人的なもののためにそれを使用しています。私は、ウェブサイトから特定の情報を引き出して家族に電子メールを送信することを実験してきました。フォーラムを読むと、Invoke-WebRequestコマンドレットを使用するとかなり良い状態になりましたが、すぐにページが読み込まれたときに動的に構築されたコンテンツにアクセスできないという制限がありました。Powershell - IEオブジェクトからWebコンテンツを取得する方法を見つけることができません

これらのフォーラムのおかげで、私はIEオブジェクトとデータを取得する方法を発見しました。私は1つのウェブサイトで運が良かったが、もう1つは同じように動作しなかった。それを理解するための少しの助けを求めて。

私の興味の対象が強調表示されたページの検査コードのスニペットです。以下は

Web Page Snippet

私はそのテキスト文字列を抽出しようとしていたコードです。私は多くの反復とアプローチを成功させずに試みました。しかし、奇妙なことに、$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

答えて

0

あなたは

$Weather0 = $Doc.getElementsByTagName('span') ` 
| ?{$_.getAttribute('class') -eq "today-wx-descrip"} | Select-Object -First 1 

今日-WX-説明VS今日-WX-DESCRIPで

$Weather0 = $Doc.getElementsByTagName('span') ` 
| ?{$_.getAttribute('class') -eq "today-wx-description"} | Select-Object -First 1 

を交換する必要があります

+0

あなたは正しいですが、これをハッキングしながら私の繰り返しの1つで、私はそれを修正しました。 OPのコードスニペットを置き換えました。これが実行されると、私は不十分なメモリエラーを取得します。 – tkcas

関連する問題