【问题标题】:PowerShell Save IE Webpage TextPowerShell 保存 IE 网页文本
【发布时间】:2017-04-19 12:20:32
【问题描述】:

我想保存网页 (ASP),就像 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 函数的情况下做到这一点。有人可以帮忙吗?

【问题讨论】:

  • 可能你没有等待 IE 完成页面加载并解析 HTML 并生成 DOM,所以还没有 .Document。您通常希望 .Navigate(..) 然后 while ($ie.Busy -or $ie.ReadyState -ne 4) { start-sleep -Milliseconds 100 } 等待它加载内容,然后再对其进行任何操作。
  • 谢谢。也许就是这样,但现在它正在运行/挂起。不应该只是延迟 1/10 秒吗?
  • @TessellatingHeckler 我还在导航和 execCommand 之间尝试了 Start-Sleep 10,但得到了同样的错误。添加您建议的行仍然会永远挂起。想法?
  • 现在它正在运行吗? You cannot call a method on a null-valued expression. 怎么了?它不会是 1/10 秒的延迟,而是无限的延迟,因为它一直在循环中,直到 IE 报告它完成。
  • 想法:你正在导航到一个“受信任的站点”,IE 正在一个新的保护模式进程中重新加载它并且你的$ie com 对象不再指向任何东西?

标签: powershell internet-explorer


【解决方案1】:

试试 Invoke-WebRequest:

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

【讨论】:

    猜你喜欢
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多