如何使用PowerShell解析网站的HTML

时间:2019-06-28 14:53:41

标签: html powershell dom html-parsing

我正在尝试检索有关网站的一些信息,我想查找特定的标签/类,然后返回所包含的文本值(innerHTML)。这是我到目前为止所拥有的

$request = Invoke-WebRequest -Uri $url -UseBasicParsing
$HTML = New-Object -Com "HTMLFile"
$src = $request.RawContent
$HTML.write($src)


foreach ($obj in $HTML.all) { 
    $obj.getElementsByClassName('some-class-name') 
}

我认为将HTML转换为HTML对象存在问题,因为在尝试“选择对象”它们时会看到很多未定义的属性和空结果。

所以花了两天之后,我应该如何用Powershell解析HTML?

因此,由于使用正则表达式解析HTML非常重要,因此我该如何做呢?似乎没有任何作用。

2 个答案:

答案 0 :(得分:3)

在2020年使用PowerShell 5+,您可以像这样进行操作:

../../../../core/material

答案 1 :(得分:0)

由于没有其他人发布了答案,因此我设法通过以下代码获得了可行的解决方案:

$request = Invoke-WebRequest -Uri $URL -UseBasicParsing
$HTML = New-Object -Com "HTMLFile"
[string]$htmlBody = $request.Content
$HTML.write([ref]$htmlBody)
$filter = $HTML.getElementsByClassName($htmlClassName)

在使用某些URL时,我遇到了$ filter变量为空而为其他URL填充的情况。总而言之,这可能适合您的情况,但似乎Powershell并不是进行更复杂的解析的方法。