Functions/Get-HtmlDocument.ps1

[CmdletBinding()]
param (
  [Parameter(Mandatory)]
  [uri]
  $Uri,

  [string]
  $UserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',

  [string]
  $Referer
)

Set-HttpClient -Uri $Uri
Add-AngleSharp

$global:HttpClient.DefaultRequestHeaders.Add('User-Agent', $UserAgent)
if ($Referer) {
  $global:HttpClient.DefaultRequestHeaders.Add('Referer', $Referer)
}

try {
  $stream = $global:HttpClient.GetStreamAsync($Uri).Result
}
catch {
  throw '{0} へのリクエストに失敗しました。'
}

$parser = [AngleSharp.Html.Parser.HtmlParser]::new()

$htmlDocument = $parser.ParseDocument($stream)

return $htmlDocument

<#
  .SYNOPSIS
  指定したURLのHTMLをパースしてAngleSharpのオブジェクトで取得します。
  .DESCRIPTION
  指定したURLのHTMLをパースしてオブジェクトで取得します。
  .PARAMETER Uri
  WebページのURIを指定する
  .PARAMETER UserAgent
  HTTPリクエストの為のユーザエージェントを指定します。
  .PARAMETER Referer
  HTTPリクエストの為のリファラを指定します。
  .INPUTS
  なし
  .OUTPUTS
  AngleSharp.Html.Dom.HtmlDocument
    AngleSharpによってパースされたHTMLを返します。
  .EXAMPLE
  PS C:\>Get-HtmlDocument -Uri 'https://www.google.com/'
 
  この例では、Googleの検索ページのパースされたHTMLを返します。
  .LINK
  https://anglesharp.github.io/docs.html
  .LINK
  https://github.com/AngleSharp/AngleSharp
#>