Invoke-WebRequest冻结/挂起

时间:2019-05-17 13:34:57

标签: powershell freeze hang 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字段。

1 个答案:

答案 0 :(得分:1)

这似乎仍然是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