新型コロナウイルス(covid-19)のデータを厚労省HPから毎日取得する

初めに

厚労省HPから各データのPDFを毎日自動取得してみました。 www.mhlw.go.jp

構成

cloud watch events を用いて、aws lambda関数を毎日起動するようにします。
lambda関数はpythonで構築。
ソースはこんな感じ。

# -*- coding: utf-8 -*-
import os
import time
import requests
import boto3
from bs4 import BeautifulSoup
s3r = boto3.resource('s3')
s3c = boto3.client('s3')
s3_bucketname = 'バケット名'

def downloadPdf(url):
    res = requests.get(url)
    return res.content

def lambda_handler(event, context):
    searchWord = [
      "国内事例における都道府県別の患者報告数",
      "新型コロナウイルス陽性者数とPCR検査実施人数",
      "新型コロナウイルスのPCR検査総実施件数"
    ]
    url = "https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000164708_00001.html#kokunaihassei"
    response = requests.get(url)
    response.encoding = response.apparent_encoding 
    # BeautifulSoupオブジェクト生成
    soup = BeautifulSoup(response.text, "html.parser") 
    
    # タグを取得
    elems = soup.find_all("a")
    targt = list(filter(lambda v: any(list(map(lambda sw: sw in v.text, searchWord))), elems))
    
    # PDFダウンロード
    for obj in targt:
        targetUrl = obj.attrs['href']
        pdfObj = downloadPdf(targetUrl)
        s3c.put_object(Bucket=s3_bucketname, Body=pdfObj, Key=obj.text + ".pdf")
        time.sleep(1)


cloudwatchから自動起動の設定をすれば、毎日pdfを自動取得し、s3に保存できます。 取得したPDFの以降の処理は出来次第、qiitaに記事書きます・・・