メモです
経過
3/23 川の防災情報がリニューアル、携帯版はサービス終了。その日に気づく。
調査開始
川の防災情報は動的ページ。
Javascriptでデータを取るか、ヘッドレスブラウザだろうと辺りを付ける。
Javascriptでデータを引くのは、先方がそういう風にしてくれていないとダメっぽい。(クロスドメイン制約)
ライブラリを解析しようとするも断念。
一方、ヘッドレスブラウザは、共有サーバーでは無理っぽい。(root権限)
ヘッドレスブラウザ案は、Python + Selenium + webdriver が割とググると出て来る。
pythonやったことないし、とりあえず途中までやってみよう。
共有サーバーのPythonは2.x。
python3が必要らしいので色々ググって入れる
pipで入れようとしたらpipがエラーになる
python2.xだとダメっぽい
結局、ファイルをD/Lしてpython3を入れる、そしたらpipも勝手に入った。
requestsやBeautifulSoupで試したら、スクレイピングは出来た。
VPSサーバーをレンタルする(3/28) 512MB 1core
requestsやBeautifulSoupと、chromeとseleniumを入れる
なんとかスクレイピングできた。(3/29)
ただし、パフォーマンスが遅い。
多重実行してみたら全然ダメ。
その間、C2A0問題にてこずるが結局諦めた。
また、seleniumの処理待ちを入れるのにてこずる。
(ググって出て来るメジャーな方法がダメ。たぶん環境によるのか。マイナーな方法でクリア)
ターゲットを「水分水質データベース」に変更 4/3
共有サーバーのpython3でやったら、それなりにできた。
cgiにしたらだめ。( cgiのコマンドパスが固定されていた )
VPSならどうにでもなるだろうが、維持費がかかるので共有サーバーで頑張る。
pythonを断念してperlに変更。
python2でもなんとかできるのかも知れないが、そもそもpython初めてなのと、perlなら現行のcgiのロジックがそのまま使える。
perlにもスクレイピングのライブラリがあるみたいだったが、ぱっと見で理解できなかっので、indexとrindexを駆使して対応。
なんとか出来た。
httpsが大変だった
この際、httpsにすることにした。
以前も試したことがあるが、常時SSLにすると、cgiの呼び出し方もhttpsにしないとエラーになる。
他で使ってくれている人に悪いのでその時は断念。
今回はどのみち書き換えが必要なのでGO
方々直す必要があって辛かった。
AdSenseやアナリティクスがhttpになっている大量のファイルの修正が必要。
これは気づかなかった。戻そうかとも思ったが、対策前進。
さくらエディタのgrep置換を使って修正。
普段からソース管理がダメダメなので、なんとか出来たが、いくつか変なのもあるかも知れない。
cgiのリリースは4/4 その後バグ修正と周辺ページの対応実施。
その後の事
2021.4.11 レンタルVPSのお試し期間終了。迷ったけど、解約。
コメント