いろいろ試したり調べたりしておりまして、覚え書きとして途中状況を残しておきます。
1. 状況
1) 新しい川の防災情報は、動的に生成されるページとなっている
htmlのsourceは以下の様になっている。
<body>
<noscript>
<strong>We’re sorry but web doesn’t work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id=app>
</div>
<script src=/kawabou/js/chunk-vendors.46e37b4f.js></script>
<script src=/kawabou/js/app.a77cee51.js></script>
</body>
参考 調布橋のページ
2) 調査状況
こちらのサーバーに、htmlをupしたり、jsファイルをアップしたりして、中身も少し変えてテストしているが、コードの分量も多いし、上記の2ファイルの中から、さらにへ別のファイルを読んでいるので、解析が大変。
なんとなくクロスドメイン制約でアウトな予感がかなりする。
このあたりは素人でよくわからない。
2. 対応方法として考えられる案
1) APIを見つけ出してデータを取得する。
a) クロスドメイン制約など、セキュリティ的な面で取得できない可能性がある。
b) 外からでも取得できる道筋が儲けられている可能性もあるが、意図的に見せないような手当がされていたら、取得不能。
あるいは、意図的にみせる手当がなされていないとアウトと言えるかもしれない。
c) この辺苦手。調べても徒労に終わる可能性あり。
d) 実現可能なら、この案の方が以下の案よりは美しい。
2) 生成されたページから値を読み取る
a) この方法なら、取得可能ではないかと思われる。
b) Pythonのver3とか、Selenium、BeautifulSoupなどのライブラリが必要っぽい。
c) 現在使用しているサーバーは、Python2になっている。
d) 環境の準備が現在の『レンタルサーバー』の契約プランで可能か不明。
e) 少し余分にお金を出してVPSのプランにすれば、環境的な問題はクリアされると思われるがそこまでやるか?
・費用面 ・VPSは世話をするのが面倒そう
f) 構築できたとして、ヘッドレスブラウザを経由するため、レスポンスが得られない可能性もある。
3. その他の事と、今後について
1) 公共のサーバーをスクレイピングしてよいものかという躊躇
a) 公共のサーバーをスクレイピングしてよいものかという躊躇は残る。
利用規約には、止めてねとやんわりと書いてあるが、強くは書いてない。
やんわり。
https://www.river.go.jp/kawabou/kwb_apend/html/caution.html
b) こちら側のサイトのアクセス数を考えると、実質的な迷惑にはならない。
c) 加えて、負荷をかけないような設計上の配慮も出来る。
2) 当面、2の案を試すことにする。
という事で、復旧できないかもしれないし、できるにしても大分時間が掛りそう。
コメント