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

Posted

技术标签:

【中文标题】PowerShell - HTML 解析:从网站获取信息【英文标题】:PowerShell - HTML parsing: get information from a website 【发布时间】: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

【问题讨论】:

【参考方案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” 能否请您更新脚本,以便我可以使用并从中学习,谢谢。

以上是关于PowerShell - HTML 解析:从网站获取信息的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发问题:已经获得了json字符串,怎么解析并显示到tableview上

powershell 此递归PowerShell脚本从SharePoint中删除网站及其所有子网站。这消除了无法进行del的问题

使用 Powershell 解析从 Web 请求返回的 JSON 字节流而不写入文件

如何解析 HTML 或将 HTML 转换为 XML,以便我从网站中提取信息(在 C# 中)[重复]

同一操作的Powershell cmdlet差异

使用 AFNetworking 从 JSON 响应中解析 HTML 标签