Public/Get-FrankHeinen.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function Get-FrankHeinen
{
    $DutchCulture = New-Object -TypeName System.Globalization.CultureInfo -ArgumentList 'nl-NL'

    Invoke-WebRequest -Uri https://www.volkskrant.nl/columns/Frank-Heinen `
    | Select-Object -ExpandProperty Content `
    | pup 'article a attr{href}' `
    | ForEach-Object {
        $Url = "https://volkskrant.nl$($_)"
        $Content = Invoke-WebRequest -Uri $Url | Select-Object -ExpandProperty Content
        $Title = $Content | pup 'h1 text{}' --plain | ForEach-Object { $_.Trim() } | Where-Object { $_ }
        $Body = $Content | pup 'section.artstyle__main--container p text{}' --plain | ForEach-Object { $_.Trim() } | Where-Object { $_ } | ForEach-Object { $_; '' }
        $DateText = $Content | pup 'time span:first-child text{}'
        $Date = [DateTime]::ParseExact($DateText, 'd MMMM yyyy', $DutchCulture)

        [PSCustomObject][Ordered]@{
            PSTypeName = 'UncommonSense.Volkskrant.Article'
            Url        = $Url
            Date       = $Date
            Title      = $Title
            Body       = $Body
        }
    }
}