gpt4 book ai didi

html - 如何使用 PowerShell 解析网站的 HTML

转载 作者:行者123 更新时间:2023-12-02 22:33:35 26 4
gpt4 key购买 nike

我正在尝试检索有关网站的一些信息,我想查找特定的标签/类,然后返回包含的文本值 (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?
  • 我不能用 IHTMLDocument2方法,因为我没有安装 Office ( Unable to use IHTMLDocument2 )
  • 我无法使用 Invoke-Webrequest没有 -UseBasicParsing因为 Powershell 在访问 ParsedHTML 属性( parsedhtml doesnt respond anymoreUsing Invoke-Webrequest in PowerShell 3.0 spawns a Windows Security Warning )时挂起并生成额外的窗口

  • 因此,由于使用正则表达式解析 HTML 是一个很大的禁忌,否则我该怎么做?似乎没有任何效果。

    最佳答案

    由于没有其他人发布了答案,我设法使用以下代码获得了一个有效的解决方案:

    $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 不是进行更复杂解析的方法。

    关于html - 如何使用 PowerShell 解析网站的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809063/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com