我正在尝试检索有关网站的一些信息,我想查找特定的标签/类,然后返回包含的文本值(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对象存在问题,因为当我尝试“Select-Object”时,看到了许多未定义的属性和空结果。
所以,在花费两天时间后,我该如何使用PowerShell解析HTML呢?
- 我无法使用
IHTMLDocument2
方法,因为我没有安装Office (Unable to use IHTMLDocument2) - 如果不使用
-UseBasicParsing
参数,我无法使用Invoke-Webrequest
,因为PowerShell会挂起并生成其他窗口来访问ParsedHTML属性(parsedhtml doesnt respond anymore 和Using Invoke-Webrequest in PowerShell 3.0 spawns a Windows Security Warning)
既然使用正则表达式解析HTML是一个大忌,那么我应该怎么做呢?似乎什么都不起作用。