LoginSignup
5
6

More than 5 years have passed since last update.

民主党のHPをスクレイピングして国会議員がいなくなったことを30秒以内にメールで通知する PowerShell スクリプト

Last updated at Posted at 2016-03-30

※公開してから気が付きましたが、すでに民進党のHPに一覧ページができてましたね。
※誰が最後に一人だけ残るのか、それだけが気がかりです。
※Office365でメールを送ります ←ココ大事

$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
$mycreds = Get-Credential -Message "Input your mail account and password."

$PageURLs = "https://www.dpj.or.jp/members/house/衆議院","https://www.dpj.or.jp/members/house/参議院"

function SendMail( $Message ) {
    Send-MailMessage -To $mycreds.UserName `
        -From $mycreds.UserName -Subject "DPJ parliaments number change."`
        -SmtpServer "smtp.office365.com" -Credential $mycreds -UseSsl -Port "587" `
        -Body $Message `
        -ErrorAction SilentlyContinue
}

while($true)
{
    foreach($PageURL in $PageURLs)
    {
        try {
            $secWait = 30 #(Get-Random -Minimum 60 -Maximum 90)

            Write-Host ("Get Page {0} after {1} sec." -f $PageURL, $secWait)
            for ($a = $secWait; $a -ge 0; $a-- ) {
                Write-Progress -Activity "Waiting..." -Status ("last {0} sec." -f $a)
                Start-Sleep -Seconds 1
            }
            Write-Progress -Activity "Waiting..." -Completed

            $HTML = Invoke-WebRequest -Uri $PageURL
            $ParsedHtml = $HTML.ParsedHtml
            $MemberCount = $ParsedHtml.getElementsByClassName("col-md-4").Length

            Write-Host ("Get {0} member at Page {1}." -f $MemberCount, $PageURL)

            if($MemberCount -ne 24)
            {
                SendMail -Message ("Member Count : {0} in {1}" -f $MemberCount, $PageURL)
                exit
            }
        } catch [Exception] {
            Write-Host ("Error at getting Page {0}." -f ($PageURL))
            Write-Error $Error[0]
            SendMail -Message ("Erroe at {0}\n\r{1}" -f $PageURL, $Error[0])
            Start-Sleep -Seconds (5 * 60)
            exit
        }
    }
}
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6