Webスクレイピングに最適な言語を探していますか?
言語なら、Pythonです。
はい、以上終了。
これで終りなら、このような記事は必要ありませんね。
私は、「正規表現」が最強だと言いたいです。
この記事を書いている私は、スクレイピング歴が長いです。
スクレイピング検定があるなら、1級ぐらいです。
動的サイトをSelenium やPhantomJSでスクレイピングするのは、もちろんです。
そして、画像(電話番号)をOCRソフトで自動読み込みまでしたこともあります。
画像をいったんサーバに取得して、それをOCRで数字だけ取得するというものです。
まだまだ、スクレイピング自慢はありますが、この辺にして本題へ。
本記事の内容
- スクレイピングには正規表現が最強
- スクレイピングに最適な言語
上記に沿って、説明を行っていきます。
スクレイピングには正規表現が最強
スクレイピングには正規表現が最強である
スクレイピングにおいては、正規表現が最強です。
だから、言語は何でもいいことになります。
ただし、正規表現に対応しているプログラム言語ということになります。
VBAですら対応しているので、未対応の言語は存在しないでしょう。
スクレイピングには正規表現が最強である理由
なぜ、正規表現が最強なのか?
この理由を説明します。
各言語には、大抵の場合スクレイピング用のライブラリが用意されています。
このスクレイピング用のライブラリが脆いのです。
専用のライブラリは、正しくHTMLコーディングされたページを読み込む前提です。
しかし、Webの世界には正しくHTMLコーディングされていないページが存在します。
もし、専用のライブラリが正しくHTMLコーディングされていないページを読み込んだらどうなるか?
ちゃんと動かないことが多いです。
正確には、多かったです。
もう、そういう専用のライブラリに依存するのをやめています。
そのため、最新のライブラリを確認できていません。
でも、そう簡単には崩れたHTMLページのスクレイピングはできないでしょう。
上記のようなことがあって、私は正規表現を利用するようになりました。
正規表現であれば、正しくHTMLコーディングされていないページでもスクレイピングできます。
正規表現であれば、対象がHTMLでなくても何でもスクレイピング可能です。
スクレイピングに最適な言語

正規表現が最強と結論付けました。
そして、正規表現であればどんなページでも対応可能です。
しかし、最強が決して最適なわけではありません。
正規表現でスクレイピングした場合、コードが少々複雑になってしまいます。
実際、コードのメンテナンス性が悪いです。
そういう意味では、正規表現でのスクレイピングはおススメできません。
正規表現を使いこなすのは、それなりに大変です。
だから、正規表現は最後の手段に残しておきましょう。
でも、私は正規表現でガリガリやり続けますけどね。
では、スクレイピングに適切な言語とは?
下記に候補をあげています。
実際に、私が触ったことがあるものだけです。
- PHP
- JavaScript
- Python
一つ一つ説明していくのもいいのですが、結論を言います。
最適な言語は、Pythonです。
Pythonなら、脳死状態でもスクレイピングできます。
ネットにあるサンプルコードをコピペでいけるでしょう。
もちろん、対象のページに合わせたパスに変更する必要はあると思いますが。
ライブラリは、どのライブラリでもいいでしょう。
使いやすいのものをどうぞ。
まとめ
スクレイピングについて説明してきました。
最強は、正規表現です。
しかし、最強であっても最適ではありません。
それに正規表現は、言語ではありません。
スクレイピングに最適な言語は、Pythonです。
理由は、サンプルコードやライブラリなどが充実しています。
これを使えば、簡単にスクレイピングが可能。
その結果なのか、最近はスクレイピングが表舞台に出てきているように感じます。
昔は、スクレイピングは一部のエンジニアが細々とやっていたモノでした。
今では、Octoparseというサービスを使えば非エンジニアでもスクレイピングができるようです。
また、Paizaというプログラミング学習サイト上でもスクレイピングに言及しています。
学習段階でも触れる技術という位置づけなのでしょう。
確かに、スクレイピングはオモシロイ技術ですからね。
さらには、スクレイピングの使い方も様変わりしています。
昔は、株価などの数値や企業情報(メールアドレス、名称、電話番号)が主な対象でした。
つまり、定型化できるような情報が対象だったのです。
しかし、今はユーザの投稿した定型化できない口コミやブログなどが対象です。
それらの非定型データを大量に集め、AIに食わせて分析をします。
例えば、以下のようなものです。
Vorkersというサイトをターゲットにしたスクレイピングの依頼です。

このような事例からもわかるように、スクレイピングは市民権を得ていると言えるでしょう。
しかし、スクレイピングがDos攻撃になりかねないことに変わりはないです。
相変わらず、スクレイピングは危険な技術ということです。
だから、本来はプログラミング初心者が気軽にやるモノでありません。
もしスクレイピングをやるなら、気を付けてください。