スクリプト言語とスクレイピング技術についての個人的昔話

コンピュータ

そのまた昔インターネットが常時接続ではなく時間で課金されていたころ、Webページの巡回(ネットサーフィン)は時間との戦いとなっていました。

お気に入りのWebサイトを更新チェックツール(WWWC)を使って更新ページだけ短時間でチェックする日々を過ごしていました。

時期的にはiPhone3が国内で販売される前でスマートフォンという用語が使われる前の時代でした。そのころ私は半年ほど何もしていない期間がありPHSを内蔵したWindowsCE端末を所有しており、いまで言うところスマートフォンの原型のようなガジェットでした。そちらの小さな画面でスクリプト言語でプログラミングをしていました。

そのガジェットはPHSでインターネット接続ができて、通信速度は当時としては高速な64Kbps(128KBps?)でしたが、ダイヤルアップ接続でしたので四六時中ネットを楽しめるわけではありませんでした。

その半年間は収入も無いので出費はなるべく押さえたい時期ですが、ただ時間だけはあり体調は最悪の状態ですが、世の中との接点はインターネットぐらいでした。

ネットの接続時間を短くするためにスクリプト言語(確かruby?)を使いWebサイトを丸ごとローカルストレージにダウンロードしオフラインでWebサイトが読めるような仕組みを構築していました。

そもそもWindowsCEはWindowsXP(?)のサブセットで見た目はWindowsですがWindowsXPと同じソフトが実行できるわけでは無いので欲しい物は自分で作る必要がありました。また、今の様にスマートフォンが前提のサービスもほとんど存在しませんでした。(ネット検索といえばGoogleではなくYahoo!の時代でした。)

技術的にはHTTP通信はライブラリがありましたが、HTMLをパースするライブラリがない為、正規表現を駆使してHTMLの解析を行いページのリンクを抽出し、ダウンロードを繰り返すことで、同一サイト内の全てのページをダウンロードするようにしていました。

今にして考えてみるとHTMLを解析しリンクを抽出するプログラミングはスクレイピングの技術で、目的は異なりますがクローラーの様にデータを蓄積しています。しいて言えば個人で運用するインターネットアーカイブのウェイバックマシンのような代物でした。

現在ではHTMLをパースするだけではWebサイトをローカルに再現することは出来ません。JavaScriptで動的に作成されたコンテンツなどに対応しようとすると、Webサイトの解析はWebブラウザをオブジェクトとしてプログラミング言語から操作するような方法が主流なんだと思います。

また、データが欲しい場合スクレイピングではなく正式に提供されているAPIを叩く方が良いですし、過去のWebページが見たければ、Pocketなどの後で読む計サービスで個別にページを保存するかインターネットアーカイブが使えます。

そう考えると個人でスクレイピングの技術を使う場面は少ないですし、Webサイト側の構成が変更都度プログラムの変更を伴いますので、維持も面倒ですのであえて自分でプログラミングするメリットは薄そうな時代になりました。

自作の更新チェックツールがエラーを吐いたので、昔を思い出してみて記事を書いてみました。更新ツールはpythonで記述されたページ更新サイトでRSSに対応していない昔ながらのWebサイトの更新と、これまた懐かしいとある掲示板サイトで特定の投稿があったことをチェックしています。24時間稼働のサーバー用のPCで1日1回指定時間に更新チェックを行い、更新があった場合メールで通知するようにしています。チェックする機関を短くしSNSなどで通知したほうがレスポンスが良さそうですが、それほど更新頻度が高いわけでは無いのでゆったりしたペースでチェックするようにしています。

プログラミング学習は個人的に必要とするツール作成のための手段で、このWebサイトは学習で得た知識を自分なりに試してみた結果を記事にしています。Webサイトを検索することで過去に自分が学んだ内容を調べることが目的となっています。このような動機で記事を書いていますので、余り統一性が無い割に似たようなテーマの記事が量産されることに成りました。

コメント