【问题标题】:Powershell: Download or Save source code for whole ie pagePowershell:下载或保存整个 ie 页面的源代码
【发布时间】:2013-06-11 16:29:35
【问题描述】:

我有这个 PS 脚本,它登录到一个站点,然后导航到另一个页面。

我想保存该页面的全部源代码。但出于某种原因。源代码的某些部分没有出现。

$username = "myuser" 
$password = "mypass"
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("http://www.example.com/login.shtml")
while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.getElementById("username").value = "$username"
$ie.document.getElementById("pass").value = "$password"
$ie.document.getElementById("frmLogin").submit()
start-sleep 5
$ie.navigate("http://www.example.com/thislink.shtml")
$ie.Document.body.outerHTML | Out-File -FilePath c:\sourcecode.txt


这里是没有遇到的代码的 pastebin
http://pastebin.com/Kcnht6Ry

【问题讨论】:

  • 粘贴似乎是私有的。
  • 抱歉,已修复,请检查。我对此进行了更多研究。它在//<![CDATA[ 之后忽略代码

标签: html internet-explorer powershell form-submit powershell-3.0


【解决方案1】:

导航后,再次检查就绪状态,而不是使用睡眠。您拥有的相同代码将起作用。

运行代码后出现,如果网站加载缓慢,可能睡眠时间不够长。

while($ie.ReadyState -ne 4) {start-sleep -m 100}

看起来还有另一篇关于这个的帖子 innerHTML converts CDATA to comments 看起来有人在该页面上创建了一个功能,您可以在其中清理它。一旦你在代码中声明了函数,它就会是这样的

htmlWithCDATASectionsToHtmlWithout($ie.Document.body.outerHTML) | Out-File -FilePath c:\sourcecode.txt

【讨论】:

  • 对不起,页面加载和一切。我有可见的。问题是它在//<![CDATA[ 之后忽略了代码
  • 非常感谢。但是使用您发布的功能我仍然遇到错误。 At C:\Users\mmmm\Desktop\new.ps1:4 char:5 + var ATTRS = "(?:[^>\"\]|\"[^\"]*\"|\'[^\']*\')*",
  • 标记为已解决,但仍需要修复该代码中的错误。
【解决方案2】:

我同意@tkrn 关于使用 while 循环等待 IE 文档准备好的观点。为此,我建议在循环中至少使用 2 秒。

while($ie.ReadyState -ne 4) {start-sleep -s 2}

我仍然找到了一种更简单的方法来完全从 URL 获取整个 HTML 源页面。这里是:

$ie.Document.parentWindow.execScript("var JSIEVariable = new XMLSerializer().serializeToString(document);", "javascript")
$obj = $ie.Document.parentWindow.GetType().InvokeMember("JSIEVariable", 4096, $null, $ie.Document.parentWindow, $null)
$HTMLDoc = $obj.ToString()

现在,$HTMLDoc 拥有完整的 HTML 源页面,您可以将其保存为 html 文件。

【讨论】:

  • 你对“JSIEVariable”的东西有什么解释吗?它有效,但我想知道为什么,因为我根本不明白这里发生了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多