Анализ HTML-таблицы в PowerShell V3

У меня есть следующая HTML-таблица Ссылка на 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, я получаю только первый ** столбец ** файла, я не могу получить доступ ко второму и т. д.

Спасибо, Охад.


person OhadH    schedule 24.01.2013    source источник
comment
Что именно вы пробовали? Например. мы хотели бы видеть код, сообщения об ошибках или что-нибудь действенное. HTML Agility Pack не создает объекты XML, а создает собственную структуру, имитирующую дерево XML DOM. Имейте в виду, что HTML часто не XML. Зачем вам здесь отчаянно нужен XML?   -  person Joey    schedule 24.01.2013
comment
P.S: мне нужно преобразовать его в XML или CSV, даже текст может быть мне полезен   -  person OhadH    schedule 24.01.2013
comment
Если вы получаете свой HTML-код через Invoke-WebRequest, он предоставляет свойство parsedHTML, с помощью которого вы можете перемещаться по DOM и конвертировать в нужный формат.   -  person raghav710    schedule 14.01.2018


Ответы (1)


вы можете попробовать это, чтобы получить весь html в тегах <nobr>. Я позволяю вам найти логику для вывода того, что вы хотите...

$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 ""}
}
person Loïc MICHEL    schedule 24.01.2013
comment
К сожалению, он открывает IE и не дает никакого вывода в powershell. - person OhadH; 24.01.2013
comment
может быть, потому что у меня есть файл локально? вин7? IE9? - person OhadH; 24.01.2013
comment
нет, я пробовал с UNC и тоже работает: $ie.navigate("\\server\test\test.html") - person Loïc MICHEL; 24.01.2013
comment
Отлично, это был UAC ... Просто нужно запустить powershell от имени администратора :) Спасибо, я попытаюсь разобрать его сейчас. - person OhadH; 24.01.2013