PowerShell - HTML解析:从网站获取信息

24

更新:脚本可使用 PowerShell V3.0,感谢 @Doug

我想使用以下 PowerShell 脚本从 Lufthansa 获取航班状态信息。我可以在浏览器中看到航班状态信息,但是我没有找到任何方法来通过我的脚本访问这些信息。

我想从网站获取以下信息:

  • 航班状态
  • 时间(起飞、到达)
  • 机场(起飞、到达)
  • 航班号(仅限 Lufthansa)

脚本:

$flight = " LH3396"
$url = "http://bing.com?q=flight status for $flight"
$result = Invoke-WebRequest $url
$elements = $result.AllElements | Where Class -eq "ans" | Select -First 1 -ExpandProperty innerText 

#[string[]]$resultArray

$resultArray = @()

foreach($element in $elements.Split("`n")){
    if($element.Length -gt "2")
    {$resultArray += $element}
}
2个回答

37

这是在PowerShell v3中查询Bing的一种方法。

function Get-FlightStatus {
    param($query)

    $url = "http://bing.com?q=flight status for $query"

    $result = Invoke-WebRequest $url

    $result.AllElements | 
        Where Class -eq "ans" |
        Select -First 1 -ExpandProperty innerText    
}
Get-FlightStatus LH3102

Flight status for Lufthansa 3102

To depart · Jan 30, 2012

From: Hamburg (HAM) 05:35 PM terminal 2

To: Vienna (VIE) 07:05 PM


Bing Travel   Source: www.flightstats.com, 1 minute ago

有没有一种简单的方法将输出转换为数组? - LaPhi
1
尝试运行 Get-FlightStatus LH3102 -split "rn" - Doug Finke
1
如果您在比利时使用bing.com,它将更改网址为be.bing.com,并且航班状态将无法工作(因为bing在比利时仍处于测试阶段)。 要解决此问题,只需在网址后添加?cc=us:"http://www.bing.com?cc=us&q=flight status for $query" - juFo
请问您能否更新脚本,以便我可以使用并学习它,谢谢。 - Mowgli

11

谢谢!我现在被困在PowerShell v2上。 - Tim Lewis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接