使用DOM从网站获取HTML
我正在尝试在powershell中编写一个脚本,可以在运行查询后使用该脚本从网站获取HTML 在我自己的机器上,我可以运行下面的程序,它不会出现任何问题,但是当我尝试在Server2008机器上运行它时,我没有从Document.Body.InnerHTML命令获得任何输出,所有Document.GetElementById部分都不会出现任何问题使用DOM从网站获取HTML,dom,powershell,Dom,Powershell,我正在尝试在powershell中编写一个脚本,可以在运行查询后使用该脚本从网站获取HTML 在我自己的机器上,我可以运行下面的程序,它不会出现任何问题,但是当我尝试在Server2008机器上运行它时,我没有从Document.Body.InnerHTML命令获得任何输出,所有Document.GetElementById部分都不会出现任何问题 $ie = New-Object -com InternetExplorer.Application $ie.silent = $tr
$ie = New-Object -com InternetExplorer.Application
$ie.silent = $true
$ie.navigate2("http://www.mxtoolbox.com/")
while($ie.busy) {start-sleep 1}
$ie.Document.getElementById("ctl00_ContentPlaceHolder1_txtToolInput").Value = "mx:domain.co.uk"
$ie.Document.getElementById("ctl00_ContentPlaceHolder1_btnAction").Click()
Start-Sleep -Seconds 10
$ie.Document.body.innerHTML | Out-File "C:\NETESP\MXRecords\MXRecordsHTML.txt" -Encoding ASCII
$ie.Quit()
是否需要在Server2008框上安装一些东西才能使此返回值
提前感谢可能是时间问题吗?我无法在2008年进行测试,但请尝试一下:
$ie = New-Object -com InternetExplorer.Application
$ie.silent = $false
$ie.navigate2("http://www.mxtoolbox.com/")
while($ie.busy) {start-sleep 1}
$ie.Document.getElementById("ctl00_ContentPlaceHolder1_txtToolInput").Value = "mx:domain.co.uk"
$ie.Document.getElementById("ctl00_ContentPlaceHolder1_btnAction").Click()
# wait for the result page
While($ie.LocationURL -eq 'http://www.mxtoolbox.com/') {
Write-Warning "Waiting for result"
Start-sleep 1
}
# grab the table html
$table = $ie.Document.getElementsByTagName('TABLE') | Where-Object {$_.className -eq 'table table-striped table-bordered table-condensed tool-result-table'}
$table.outerHTML | Out-File "C:\NETESP\MXRecords\MXRecordsHTML.txt" -Encoding ASCII
$ie.Quit()
您可以从IE用户会话访问URL吗?安全策略允许导航?嗨,Christian,我可以访问服务器上的网页,脚本还可以提交值并单击查找按钮检索结果。当我试图在最后获取HTMl时,问题就出现了。我还设置了
$ie.Visible=$true
来代替$ie.silent=$true
,但这没有什么区别。我可以告诉你,我已经在W2008 R2服务器上测试了你的代码,它工作正常……嗨,Shay,谢谢你在这方面的帮助。您给出的代码没有直接起作用,但您的想法确实引导我走上了一条不同的道路,我现在能够通过使用一个div Id来获取HTML,该div Id包含我想要的内容,而不是整个页面。