2017-04-19 106 views
0

我想保存一个网页(ASP),就像IE将它保存为文本文件一样。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(..)'然后'while($ ie.Busy - 或$ ie.ReadyState -ne 4){start-sleep -Milliseconds 100}'等待它加载内容,之前用它做任何事情。 – TessellatingHeckler

+0

谢谢。也许就是这样,但现在它正在运行/挂起。不应该只有1/10秒的延迟吗? – Nate

+0

@TessellatingHeckler我也在导航和execCommand之间尝试了'Start-Sleep 10',但得到了同样的错误。添加你建议的线路仍然会永远挂起。想法? – Nate

回答

0

尝试调用-的WebRequest:

Invoke-WebRequest -Uri "http://www.powershell.org" -OutFile "powershell.txt"