PowerShell HTML方法getElementsByClassName返回null

时间:2018-09-20 14:47:13

标签: html powershell dom

我正在尝试编写一个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 :(得分:0)

问题似乎是所使用的PowerShell版本。在计算机上运行的PowerShell版本为4.11。

在另一台计算机上使用PowerShell 5.1时,代码可以正常工作。

作为一种变通方法,由于无法更新PowerShell的合规性,并且我只在查找div-elements,因此我使用了以下代码:

$bodyHTML = ($html.body.getElementsByTagName("div") | where { $_.className -eq "news-item" })[0].innerText;