2017-04-19 7 views
0

私はIEがテキストファイルとして保存する場合とまったく同じようにWebページ(ASP)を保存したいと思います。PowerShellを保存IEウェブページのテキスト

私はthisを発見し、試してみました:

$ie=New-Object -ComObject InternetExplorer.Application 
$ie.Navigate($Page) 
$ie.Document.execCommand("SaveAs", $false, "1.txt") 

しかし、私はエラーを取得しています:

You cannot call a method on a null-valued expression. 
At line:3 char:1 
+ $ie.Document.execCommand("SaveAs", $false, "1.txt") 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : InvokeMethodOnNull 

私は私が間違ってやっているかわからないんだけど。

私は

$web = New-Object Net.WebClient 
$web | Get-Member 
$web.DownloadString($Page) | Out-File "test.html" 

経由でページをキャプチャしようとした場合、私はページを取得しますが、それは私がリンクを知らせるサイトで作成されたエラーページが無効でいますので、私ならば、それだけで、実際にページを見つけましたそれをIEセッションを通してロードします。

私は本当にただのテキストファイルとしてIEのページをキャプチャ自動化する必要がある、と私はSendKey機能を使用せずにそれを行うには願っています。誰も助けることができますか?

+0

IEはページをロードし終えると、HTMLを解析し、DOMを生成するためにおそらくあなたは待っていないので、何の.Documentはまだありません。あなたは一般的に必要に '.Navigate(..)'、その後、 '($ ie.Busy -OR $ ie.ReadyState -ne 4)しながら、{開始-sleepが-Milliseconds 100}'それがコンテンツをロードするために前に、待機しますそれを使って何かをする。 – TessellatingHeckler

+0

ありがとうございます。たぶんそれですが、今は走っている/ぶら下がっています。それで1/10秒遅れてはいけませんか? – Nate

+0

@TessellatingHecklerまた、navigateとexecCommandの間に 'Start-Sleep 10 'を試みましたが、同じエラーが発生しました。あなたが示唆している行を追加することは、まだ永遠にハングアップしています。アイデア? – Nate

答えて

0

は、Invoke-WebRequestクラスを試してみてください:

Invoke-WebRequest -Uri "http://www.powershell.org" -OutFile "powershell.txt" 
関連する問題