PowerShell - HTML parsing: get information from a website

LaPhi picture LaPhi · Jan 29, 2012 · Viewed 83.1k times · Source

Update, Script is working with PowerShell V3.0, Thanks @ Doug

I want to use the following PowerShell script to get flight status information from Lufthansa. I can see flight status information in the browser, but I haven't found any way to access this information with my script.

I want to get the following information from the website:

  • flight status
  • time (departure, arrival)
  • airport (departure, arrival)
  • Flight Number (Only Lufthansa)

Script:

$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}
}

Answer

Doug Finke picture Doug Finke · Jan 30, 2012

Here is a way to query Bing in PowerShell v3

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