WEBサイトの情報を取得するクローラーとスクレイピング技術について考える

2018年7月30日

テクノロジー

Nodejsでスクレイピングシステムを構築していますが、クローリングとスクレイピングには今と昔の大きく2つの技術に別れる事がわかりました。 その昔、まだRSSという技術も言葉もなかった時代にサーバーのCGIを使って任意の新聞WEBサイトのトップページのヘッドラインを取得して、自分のホームページで自動公開していたという事をした経験があり、プロバイダーのレンタルサーバーで構築したので、かなりの機能制限とCRON機能が使えないなどの中、頑張った記憶があります。 そもそもクローリングとスクレイピングっていう言葉をきちんと理解していない人もいるので、その辺もわかりやすく解説しておきたいと思います。

クローリングとスクレイピングの違い

SEOをやっている人はSearchConsoleなどでクローリングという機能を目にする事がありますが、検索エンジンが行なっているのはクローリングという作業になります。 「クローリング」とは、検索エンジンなどのロボットエンジンが、任意のWEBサイトのソースコードを取得する事。 # 参考 https://www.weblio.jp/content/クローリング 「スクレイピング」とは、クローリングしたソースコードからページ内の任意の要素の値や情報を抜き出す事。 # 参考 https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0 要するに、「クローリング」したページのソースコードを元に、値を取り出す事を「スクレイピング」という風に言うわけですね。 古くて今尚研究されているジャンルでもあります。 Googleが検索エンジンの更新を行なっているのは、まだまだスクレイピングの技術をAIと繋げてより人に近い判断でスクレイピングしようとしているのではないでしょうか?

旧タイプエンジニアの話

とあるエンジニアの方とお話させて頂いた時の話です。 自称「クローリングとスクレイピングが得意なエンジニア」と言われて紹介されたのですが、 クローリングについての知識は豊富なのですが、スクレイピングについてはjavascriptに対応できないとか、ページレンダリング処理に時間が掛かると言う風に発言をしていて、今時のphantomjsなどの事をどうやら知らない様子だったため、教えてあげたという話なのですが、 最近のライブラリをウォッチする事を怠ってはいけないのはすでにMITライブラリで存在する事を知らないと言うエンジニアの無知さ加減は非常にクライアントが多大な費用を支払うはめになる事を物語っている。 そもそも、昔のクローリングとスクレイピングというのは、最近のものと違い、取得したソースコードを正規表現などを駆使して、タグ構造を掘り進めていくような内容で、Attributeで使用しているダブルクォートとシングルクォートが違うだけで、正常にデータ取得できない場合もあり、非常にもどかしい感じでしたが、 旧版の最大の欠点は、javascriptで変化するWEBページに対応できないという点でした。

今時のスクレイピング

最近では、「ヘッドレスブラウザ」という言葉が一人歩きしていますが、要するにリアルタイムにWEBサイトをクローリングして、任意の時点の値を返したり、画面キャプチャを返す事で、サーバー側にブラウザをおいた状態で、画像閲覧するだけでネットサーフィンができてしまいます。 これはPhantomJSなど、JSも含めたレンダリングが可能になったライブラリが数多く出てきた事で、それを利用したスクレイピング技術が搭載しやすくなった事が技術進歩していると思われます。 サーバーでレンダリングされた画像に対して任意のタグに対して文字入力、クリック、などの操作ができると、もはやそれは、ブラウザと同じ動作をすると言っても過言では無いでしょう。 ヘッドレスブラウザまで行わなくても、任意のサイトで、特定のページに移動して、とある文言で検索を行い、その結果ページの重要なキーワードを取得するだけで、リアルタイムに重要な情報をインターネットというデータベースから取得する装置が完成できます。 悪意が有る無いに関わらず、自分のサイトに大きなデータベースを持たなくても、スクレイピングする時にだけ電源が入るサーバーさえあれば、重要な情報取得ができる装置が簡単に作れると言う事なんですね。 すごい時代だ!

情報ビジネス

今では小説もニュースも株価も各種ログデータやビッグデータなども、情報というモノは全てビジネスになる事が可能です。 ただ、ビッグデータを持っている企業がそれをビジネス展開できていないというケースも多いのですが、データを扱えるデータサイエンティストが不足しているという風に言われていますが、確かにデータをビジネスにするには、有る程度の技術も含めた知識が必要になります。 でも、データビジネスを行なっている会社がどのような事をやっているかを理解すれば、素人でも簡単に手持ちのデータをビジネス活用することはそんなに難しくないのですが、このハードルは、エンジニアと非エンジニアに発生している大きな壁のように、非常に高い壁に感じている人が多いという事実もあります。 昨今では、AIと組み合わせて、ビッグデータを活用するというような提案ビジネスが盛んだったのですが、2018年後半では少し落ち着いてきているようですね。 僕もずっと感じていた、AIを使うと言う技術が今の時点でマユツバな技術であるという点です。 結果、AIで構築したにも関わらず、「要件に入っていない」とか「想像できなかった」というような実装失敗例が数多く報告されていて、素人が聞いても「それってAIで考えろや」と思わざるを得ない結果になっています。 個人的にはGoogleのマネタイズを参考にするだけで、日本国内企業は、データビジネスを円滑に進めるアイデアはたくさん得られると思うんですが、それも含めてアイデアの領域ですからね。 うちの会社でコンサルティングを行うことは可能なんですが、もう一つの問題として、こうした会社さんの特徴の一つに、「あまり投資を行わない」という欠点もあり、お友達として助言してあげる事が多いのが現状です。 お仕事としていただけたら、もっと日本経済が発展するのになあ・・・(自画自賛)

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。