【问题标题】:DOM - links for page not available on one machine, are on anotherDOM - 页面链接在一台机器上不可用,在另一台机器上
【发布时间】:2013-02-22 21:31:58
【问题描述】:

我正在使用 Powershell 从使用 DOM/IE 的网站获取数据。它在我的桌面上运行良好。在我的笔记本电脑上,它失败了。这些是公司配置的机器,具有相同的 IE 版本、相同的设置、相同的代理等。我查看了 IE 中的安全设置,它们看起来都一样。

这是即使页面上有链接也没有返回链接的代码:

$Links = $doc.Links

有什么想法吗?

【问题讨论】:

    标签: dom powershell automation powershell-2.0


    【解决方案1】:

    如果您已确认两台机器上的设置相同,是否可以使用网络浏览器(即 IE)进行导航?如果是这样,那可能是时间问题?试试下面的代码,它应该等待页面完成加载,然后再获取 DOM 的句柄。

    $ie = New-Object -com InternetExplorer.Application
    $ie.silent = $false
    $ie.navigate2("http://google.co.uk")
    
    while($ie.busy) { start-sleep 1 }
    
    $doc = $ie.Document
    
    $doc.links | Select innerText, href
    
    $ie.Quit()
    

    【讨论】:

    • 我的脚本中确实有 $ie.busy 等待。我运行了你的脚本。在我的桌面上,我得到了所有的输出。在我的笔记本电脑上,我什么也得不到(尽管当我设置 visible=true 时它肯定会打开浏览器并转到该站点)。
    • $doc.fileSize 是否返回大小(在我的机器上为 109264)?
    • 你用这个有什么回报吗...$webClient = new-object System.Net.WebClient <linebreak> $webClient.Headers.Add("user-agent", "PowerShell Script") <linebreak> $output = $webClient.DownloadString("http://www.google.co.uk/") <linebreak> $output.Length <linebreak>
    • 忽略我最后的评论。您可以通过 IE 对象返回页面。您可以使用 PowerShell ISE 并检查 $ie 对象返回的内容吗?另外,如果文档对象返回任何内容?
    • 你是在正确的道路上...... ie 和 doc 都是空的。我不知道为什么。我看不出有什么会导致这种情况的。到目前为止,它工作正常。到那时,它登录网站,进入某个页面,选择一个下拉列表菜单,然后 ie 和 doc 为空。
    猜你喜欢
    • 2018-01-06
    • 2016-09-28
    • 2015-06-29
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2015-11-08
    相关资源
    最近更新 更多