首页 > 解决方案 > Invoke-WebRequest 冻结/挂起

问题描述

为什么 cmdlet“Invoke-WebRequest”在某些 URL 上冻结/挂起?任何可能的解决方法?我想访问给定网页的“span”对象,如果它不那样挂起,这个 cmdlet 将非常有用。

例如,这挂起:

Invoke-WebRequest -Uri "https://cloud.google.com/chrome-enterprise/browser/download/"

这不会:

Invoke-WebRequest -Uri "https://www.microsoft.com/fr-ca/"

-UseBasicParsing 使其运行,但我想使用 Invoke-WebRequest 返回的功能而无需基本解析,因为通过基本解析,我尝试提取的 span 字段未填充。

标签: powershellfreezeinvoke-webrequest

解决方案


这似乎仍然是PowerShell中的一个错误

https://github.com/PowerShell/PowerShell/issues/2867

一种可能的解决方法是手动将项目转换为已解析的 HTML

Function ConvertTo-NormalHTML {
    param([Parameter(Mandatory = $true, ValueFromPipeline = $true)]$HTML)

    $NormalHTML = New-Object -Com "HTMLFile"
    $NormalHTML.IHTMLDocument2_write($HTML.RawContent)
    return $NormalHTML
}

$Content = (Invoke-WebRequest -Uri "https://cloud.google.com/chrome-enterprise/browser/download" -UseBasicParsing ).Content

$ParsedHTML = ConvertTo-NormalHTML -HTML $Content

$ParsedHTML

推荐阅读