在PowerShell V3中解析HTML表

时间:2013-01-24 08:34:04

标签: powershell html-agility-pack

我有以下HTML表Link To the HTML

我想解析它并将其转换为XML / CSV / PS对象, 我尝试使用HtmlAgilityPack.dll但没有成功。 任何人都可以给我任何指示吗?


我想将表转换为PSObject并将其导出到csv, 我目前只是代码的开头, 和访问行,但我无法访问行

中的值
Add-Type -Path C:\Windows\system32\HtmlAgilityPack.dll
$HTML = New-Object HtmlAgilityPack.HtmlDocument
$res = $HTML.Load("C:\Test\Test.html")
$table = $HTML.DocumentNode.SelectNodes("//table/tr/td/nobr")

当我访问$ table [0..47] .InnerHtml时,我只得到文件的第一个**列**, 我无法访问第二个等等

谢谢Ohad

1 个答案:

答案 0 :(得分:3)

你可以尝试这个来获取<nobr>标签中的所有html。我让你找到输出你想要的逻辑......

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://urltoyourfile.html")
$doc = $ie.Document
($doc.getElementsByTagName("nobr"))|%{$_.innerHTML}

输出:

Lead User&nbsp;&nbsp;
Accesses&nbsp;&nbsp;
Last Accessed&nbsp;&nbsp;
Average&nbsp;&nbsp;
Max&nbsp;&nbsp;
Min&nbsp;&nbsp;
Total&nbsp;&nbsp;
amirt</NO br>
2
01/20/2013 09:40:47
04:18:17
06:19:26
02:17:09
08:36:35
andream
1
01/20/2013 10:33:01
02:34:37
02:34:37
02:34:37
02:34:37
avnerm
1
01/17/2013 11:34:16
00:30:44
00:30:44
00:30:44
00:30:44
brouria

一种解析它的方法:

($doc.getElementsByTagName("nobr"))|%{
    write-host -nonew $_.innerHTML";"
    $cpt++
    if ($cpt % 8 -eq 0){$cpt=1;write-host ""}
}