Closed donuzium closed 4 years ago
半自動化 スクレイピングして、現在の検査件数から増えた数をその日のデータとしてオブジェクトに追加するだけのスクリプト。 特にこれを回しても、データが変わるわけではなくて、ダンプしたJSONを手動でこれまでと同じように更新するというフローです。
https://colab.research.google.com/drive/1SKLvuDbRN0wHVl715h6p6BN6QptGBrn-
福島県からCSVが公開される場合、Firestoreでなくても外部のjsonファイルを読み込む形にすればいいかなと思いました。
理想的な流れを書きます。
CSVをCloud Functions(for Firebase)で取得する。 これが無料枠では、Googleネットワークから出れないので有料版にする必要がある。
取得したデータをdata.jsonの形式にしてCloud Storage(for firebase)にストア。 Firestoreなどにデータを格納するよりも、Storageの方が安価かつ高速になるはず。
ウェブページからはストアしたdata.jsonを参照してデータに表示する。
CSVサンプルが出てきました。 担当の方とのやり取りの中で、まだ公開前だということで、こちらへデータの記載はしません。 正式に公開されたら詳しくお知らせしますが、皆さんの活動で、ついに動いた、ということです。
このIssueに入ります。
こんにちは、栃木県版のcovid19対策サイトを構築しているものです。 https://github.com/covid19-tochigi/covid19 県とのデータ共有に関して検討しているのですが、 donuzimuさん達が取られている方法について詳しく教えていただけませんか? お手数をおかけしますが、宜しくお願いします
こんにちは!お互いお疲れさまです。 基本的にはまだ話し合っている段階なので、今後変わるかもしれませんが、基本的には「新型コロナウイルス感染症対策に関するオープンデータ項目定義書」をベースにして、その中で公開可能な情報をCSVとして県のサイトにアップロードしてもらうという方針です。
それをdata.jsonの形にするイメージです。
ここからはまだ企画の段階ですが データを定期的にクローリングして、今はビルド時に含まれているdata.jsonを外に出してそのデータを扱うというような設計にする考えでいます。できなければActionsのビルドでデプロイする際に、data.jsonを更新する感じですね。
Shimizuさん
お互い、お疲れ様です! 早速のご返信、ありがとうございます。
オープンデータ項目定義書、ありがとうございます。 現在、栃木チームも県庁に対しデータを共有してほしいコンタクトをしています。 これをベースにアプローチしてみます。
福島の方では、csvファイルの置き場所を県のサイトにする方針なんですね! そうしましたら、webをスクリーピングして、定期的にcsvファイルを取得してdata.jsonに変換する感じ時ですか?
栃木では以下の手順でデータを更新しています。 ・有志らが県サイトを定期的に巡回し、pdfからデータを抽出 ・抽出したデータをgoogleスプレットシートに記入 ・googleスプレットシート をエクセル形式でダウンロードしpythonプログラムでdata.jsonに反映 ・githubへマージしサイト更新
data.jsonはやはり、外して外から反映できる方がいいですよね! でないと県がデータを公開してからサイトに反映されるまでタイムラグがありますよね。
2020年4月8日(水) 16:34 Shun Shimizu notifications@github.com:
こんにちは!お互いお疲れさまです。 基本的にはまだ話し合っている段階なので、今後変わるかもしれませんが、基本的には「新型コロナウイルス感染症対策に関するオープンデータ項目定義書 https://www.code4japan.org/activity/stopcovid19 」をベースにして、その中で公開可能な情報をCSVとして県のサイトにアップロードしてもらうという方針です。
それをdata.jsonの形にするイメージです。
ここからはまだ企画の段階ですが
データを定期的にクローリングして、今はビルド時に含まれているdata.jsonを外に出してそのデータを扱うというような設計にする考えでいます。できなければActionsのビルドでデプロイする際に、data.jsonを更新する感じですね。
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/gdg-fukushima/covid19/issues/14#issuecomment-610800828, or unsubscribe https://github.com/notifications/unsubscribe-auth/AO7DUOC74SGUTHWDKRKVKLLRLQSKBANCNFSM4LPJAOZA .
そうしましたら、webをスクリーピングして、定期的にcsvファイルを取得してdata.jsonに変換する感じ時ですか?
はい。CSVのURLが更新のたびに変わる仕様なので、公開されているサイトをスクレイピングしてcsvを取得します。CSVのURLが固定であれば、直でCSV読込みに行きたいんですけどね。
そうなんですね!
色々と教えていただき、ありがとうございます。 トライしてみます。 また、情報を共有させてください。 2020年4月8日(水) 19:21 Shun Shimizu notifications@github.com:
そうしましたら、webをスクリーピングして、定期的にcsvファイルを取得してdata.jsonに変換する感じ時ですか?
はい。CSVのURLが更新のたびに変わる仕様なので、公開されているサイトをスクレイピングしてcsvを取得します。CSVのURLが固定であれば、直でCSV読込みに行きたいんですけどね。
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/gdg-fukushima/covid19/issues/14#issuecomment-610876914, or unsubscribe https://github.com/notifications/unsubscribe-auth/AO7DUOGGAPLCGMV2W33QBJDRLRF3PANCNFSM4LPJAOZA .
はじめまして。 @hagume さんと一緒に栃木サイトを運営している者です。スクレイピングのスクリプトを動作させるプラットフォームとしてサーバーレスを考えていらっしゃるようですですが、さくらさんが無料提供の申し出をされているサーバー を使わせてもらうのはどうでしょう? 栃木も有志で活動しているためなるべく費用はかけたくないので、こういったところも活用できるかな、と考えています。
はじめまして。ありがとうございます。 さくらのクラウドの無償提供の件は検討の中には入っていましたが、CI/CDの運用のしやすさと普段私が主につかてるというところで、今のところはGCPにインフラをまとめようという事になっています。 想定しているスクレイピングの処理は無料枠の中に収まる計算です。
あと、このIssueはデータ取得の自動化についてのIssueなので、インフラについてのコミュニケーションは、また別のIssueなど立てていただいて、そちらにまとめるのが良いかなと思いました!
こんにちは 定期実行をGithub ActionsのSchedule機能で行うのはどうでしょうか? 以下のようなWorkflowを書くと実現できます。
name: Create File
on:
schedule:
- cron: '0/5 * * * *'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: create file
run: |
bash create_file.sh
- name: Commit files
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
git commit -m "Add changes" -a
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
上記のWorkflowを以下のリポジトリで試しています。 一つの参考と成れば幸いです。 https://github.com/nozo-moto/github_action_cron_for_create_data_and_commit_try
概要 / Summary:
13 を受けて、データを取得してくる処理を自動化する。
誰が使うか / For whom:
全ユーザー
何のために / For what:
恒常的なデータ更新
どのように実現するか / How:
Firebase Functionsを使って、Firestoreの情報を更新する。
その他の情報 / Other informations: