新型コロナウイルス(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に記事書きます・・・