HTML-метод PowerShell getElementsByClassName возвращает значение NULL - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь написать скрипт PowerShell, который извлекает HTML-страницу с веб-сайта и извлекает из нее некоторую информацию.

Мой код выглядит следующим образом:

$html = (invoke-webrequest -uri $address).parsedHTML;
$bodyHTML = $html.body.getElementsByClassName("news-item")[0].innerText;

Сценарийвыбирает сайт нормально.Важная часть веб-сайта выглядит следующим образом:

...
<DIV class=news-item>
Important Information
...

Проблема: я всегда получаю сообщение об ошибке: «невозможно индексировать в нулевой массив».Функция getElementsByClassName () - ничего не возвращает.

Если я перечислю все div и покажу имена классов:

$html.body.getElementsByTagName("div") | select className

, в нем будут перечислены все имена классов, включая "news-item", который я ищу.

Кто-нибудь имеет представление, в чем может быть проблема?

1 Ответ

0 голосов
/ 28 сентября 2018

Проблема, похоже, в используемой версии PowerShell.Версия PowerShell, запущенная на компьютере, была 4.11.

При использовании PowerShell 5.1 на другом компьютере код работал нормально.

В качестве обходного пути, потому что PowerShell не может быть обновлен, и я искал толькоdiv-элементы, я использовал следующий код:

$bodyHTML = ($html.body.getElementsByTagName("div") | where { $_.className -eq "news-item" })[0].innerText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...