web-dev-qa-db-fra.com

PowerShell - Analyse HTML: obtenir des informations à partir d'un site Web

Mise à jour, le script fonctionne avec PowerShell V3.0, merci @ Doug

Je souhaite utiliser le script PowerShell suivant pour obtenir des informations sur l'état du vol auprès de Lufthansa. Je peux voir les informations sur l'état du vol dans le navigateur, mais je n'ai trouvé aucun moyen d'accéder à ces informations avec mon script.

Je souhaite obtenir les informations suivantes sur le site Web:

  • l'état du vol
  • heure (départ, arrivée)
  • aéroport (départ, arrivée)
  • Numéro de vol (uniquement Lufthansa)

Scénario:

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

Voici un moyen d'interroger Bing dans 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
36
Doug Finke

Vous pouvez utiliser le Html ​​Agility Pack .

Voici un article sur son utilisation avec PowerShell: HTML Agility Pack Rocks Your Screen Scraping World

11
TrueWill