任意キーワードでWebスクレイピングして効率的に情報収集


Webスクレイピング

Webスクレイピングとは、Webページからデータを抽出して、分類したファイルフォーマット、データベースに格納し、分析を行う技術です。
データセントリックとか、データが競争力を左右するとか言われる昨今(これを書いているのは2020年)ですが、人手では処理しきれないぐらい膨大なデータがあるWebのデータをいかに効率的に収集・整理・分析するかは、他者に先んじる付加価値となります。

ここではWebスクレイピングの1つの事例についてご紹介します。

動機

再建築不可など特定の不動産物件を効率的に検索

中古の一戸建て住宅を探している友人が、不動産販売会社のページから条件に合った物件情報だけ抜き出せないかと依頼してきました。

というのも、物件が東京だけでも1000件以上掲載されていて、地域とか面積とか価格などの条件では抽出できるものの、フリーキーワードで検索できないのだとか。しらみつぶしに全件確認するには件数が多すぎます。

また、Google検索などでも、特定のページをキーワード検索できたりしますが、それだとページ内にある広告やリンクの文字列などのノイズも含めて余計なものも沢山結果として挙がってきてしまいます。
このやり方は、ページ内の特定個所にある文字列のみを検索対象にすることが可能です。例えば物件情報の備考欄に「再建築不可」というキーワードを含むといった検索が可能で、無駄な検索結果を排除することができ、極めて効率的です。

Webページのテキスト解析を行って、キーワードが含まれたページだけ自動的に抽出できれば、マニュアル操作で見なくても、効率的に欲しい情報だけ取り出すことができます。業者さんなんかは効率化できるかもしれませんね。

MATLABでのプログラミング

こういったことはMATLABのテキスト解析機能を使えば簡単にできます。

ハイパーリンクを抽出
codeLinkPage = webread(getURL);  % Webページ読み込み
strLink = extractBetween(codeLinkPage,startTagTable,endTagTable);
tree = htmlTree(strLink);   
selector = "A";
subtrees = findElement(tree,selector);   % 特定タグを抽出
HtmlLinkList = getAttribute(subtrees, "href");   % HTML Linkを抽出

数千件のデータから例えば「ロフト付き」とか「再建築不可」とか「借地権」というようなフリーキーワードで、条件に合致したものだけ抽出できるので、物件情報を1つ1つ確認していく手間が大幅に省けます。

GUI作成

App DesignerでGUIを作成して誰でも使えるように仕立てました。
GUIの画面と、GUI操作によって処理されるプログラムとの行き来がしやすいので、開発が行いやすい。

こちらはGUIの操作パネルを編集する「設計ビュー」

こちらは処理されるプログラムを書く「コードビュー」

作成したのがこれ。不動産業者のWebページから検索キーワードを含んだ物件情報のみ抽出します。

MATLABというとどうしても高度な解析に使うツールと思われがちですが、業務の効率化や自動化にも使える良いツールだと思います。

また、こちらのようなアプリは各自独自の抽出条件があるためカスタマイズが欠かせませんね。もっと色々なWebページのデータを効率的に抽出・解析することにトライしてみたいと思います。

つづく
P.S.
Webスクレイピングのカスタムアプリを作成したい方は個別にお問い合わせ下さい。