Public/Get-TomGauld.ps1
|
function Get-TomGauld { param ( ) $AmericanCulture = New-Object -TypeName System.Globalization.CultureInfo -ArgumentList 'en-US' curl --silent --location 'https://www.newscientist.com/author/tom-gauld/' | Join-String -Separator ' ' | ConvertTo-HtmlDocument | Select-HtmlNode -CssSelector 'a' -All | Select-Object -ExpandProperty Attributes | Where-Object Name -EQ 'href' | Where-Object Value -Like 'https://www.newscientist.com/article/*' | Select-Object -ExpandProperty Value | ForEach-Object { $Document = curl --silent --location $_ | Join-String -Separator ' ' | ConvertTo-HtmlDocument $DateText = $Document | Select-HtmlNode -CssSelector '.article__pubdate' | Get-HtmlNodeText $Date = [DateTime]::ParseExact($DateText, 'd MMMM yyyy', $AmericanCulture) $Title = $Document | Select-HtmlNode -CssSelector 'h1' | Get-HtmlNodeText $Image = ($Document | Select-HtmlNode -CssSelector 'figure.wp-block-image img').GetAttributeValue('src', '') [PSCustomObject][Ordered]@{ PSTypeName = 'UncommonSense.NewScientist.Article' Url = $Url Date = $Date Title = $Title Body = $Image } } } |