【问题标题】:PowerShell - HTML parsing: get information from a websitePowerShell - HTML 解析:从网站获取信息
【发布时间】:2012-02-21 15:20:30
【问题描述】:

更新,脚本正在使用 PowerShell V3.0,谢谢@Doug

我想使用以下 PowerShell 脚本从 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}
}

【问题讨论】:

    标签: powershell html-parsing


    【解决方案1】:

    您可以使用Html Agility Pack

    这是一篇关于在 PowerShell 中使用它的文章:HTML Agility Pack Rocks Your Screen Scraping World

    【讨论】:

    • 谢谢!我现在被困在 PowerShell v2 上。
    【解决方案2】:

    这是一种在 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
    

    【讨论】:

    • 有没有简单的方法将输出转换为数组?
    • 尝试 Get-FlightStatus LH3102 -split "rn"
    • 以防万一:如果您只是在比利时使用 bing.com,它会将 url 更改为 be.bing.com 并且航班状态将不起作用(因为 bing 仍处于测试阶段在比利时)。要解决此问题,只需将 ?cc=us 添加到 url:“bing.com?cc=us&q=flight status for $query”
    • 能否请您更新脚本,以便我可以使用并从中学习,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多