使用Powershell从html获取特定数据

时间:2017-01-11 00:19:10

标签: html powershell

我想使用MS Powershell自动完成工作中的任务。请参阅下面的代码,登录网站。这段代码工作正常。

RewriteCond %{QUERY_STRING} !^noredirect=1$

现在,为了下载报告,我需要从HTML正文中提取一个数字并将其插入变量中。我之所以这样做是因为每次访问该页面时这个数字都会改变。请参阅下图,其中数字位于网页的HTML正文内。它总是12位数:

image(click here) 这是我的问题。我无法在变量中得到这个数字。如果可以,那么我将使用下面的脚本完成Powershell代码。

$username = "usern"
$password = "pass"
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("http://www.exemple.com")
while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.IHTMLDocument3_getElementByID("textfield").value = $username
$ie.document.IHTMLDocument3_getElementByID("textfield2").value = $password
$ie.document.IHTMLDocument3_getElementByID("btnLogin").Click();

你看到的地方' xxx ..'我会替换变量并下载报告

2 个答案:

答案 0 :(得分:1)

在你的代码之后     while($ ie.ReadyState -ne 4){start-sleep -m 100}

试试这个:

$($ie.Document.getElementsByTagName("a")).href | ForEach {
    # The next line isn't necessary, but just to demonstrate iterating through all the anchor tags in the page (feel free to comment it out)

    Write-Host "This is the href tag that I'm enumerating through: $_"

    # And this bit checks for that number you're looking for and returns it:
    if( $_ -match "javascript:openwindow('/\.\./\.\./[\d+]\.pdf'.*)" )
    {
        $matches[1]
    }
}

这应该有用。

答案 1 :(得分:0)

请参阅下面的代码以及我的问题的答案。

$($ie.Document.getElementsByTagName("a")).href | ForEach {

if( $_ -match '(\d+)\.pdf' )
{
    $matches[1]
   }
}

谢谢!