スクレイピングはHTMLを解析するわけだが、もし、サイトでRSSが提供されているのであれば、RSSも併用するとスクレイピングしやすい。RSSは構造化されたデータだからだ。
RSSのデータ内には、記事の「タイトル」「概要」「更新日」「URL」がカテゴリ別に分けられ、記載されている。更新日が入っていることからも、RSSを見れば、最新のコンテンツのURLが分かるというのは、改めて言うまでもない。
スクレイピングする時には、カテゴリーも得られるという点に着目したい。この分類が可能なことは、「そのカテゴリのコンテンツ」だけの抜き出しが極めて容易になるということだ。
例えば、実際にオルタナティブ・ブログのRSSは、幾つかのカテゴリに分類されている。実際にInternet Explorer 7でRSSを参照すると、右側にある[カテゴリによるフィルタ]の部分で確認できる(図3)。
実は、スクレイピングというものは、昔からあるものだ。最近登場した技術というわけではない。それではなぜスクレイピングが、いまになって騒がれ出したのか?
それには、3つの理由がある。
1)マッシュアップできないサイトへの不満
第一に挙げられるのは、心理的な理由だろう。冒頭で説明したように、マッシュアップできるサイトは、あまりにも少ない。
マッシュアップが流行れば、マッシュアップできないサイトでも、なんとかマッシュアップしたいと思うのは不思議ではない。
2)HTMLコードがキレイになった
第二に挙げられるのは、マッシュアップのしやすさという技術的な理由だ。
これはHTMLにおいて、「構造」と「スタイル」との分離が進み、HTMLの構造がキレイになったという面が大きい。従来までのHTMLは、ただ文字を大きくするためだけにh1タグを使ってみたり、レイアウトを整えるためにtableタグを多用したりするなど、今からすればひどい状況だった。このような状態では、スクレイピングするといっても、情報要素の特定がしづらかったのだ。
しかし最近では、そういったスタイルはCSSとして設定されることが多くなり、HTMLはキレイに構造化されていることが大きい。これにより、「どこからどこまでを切り出すか」という指定がしやすくなったのだ。
3)スクレイピングするためのライブラリやツールが整ってきた
従来は、スクレイピングの技法は、HTMLを解析してif文で調べたり、正規表現でパターンマッチさせたりするというのが、主たる方法であった。この方法では、スクレイピングする範囲の設定が極めて煩雑になる。
しかし最近は、先人が作ったスクレイピングのライブラリやツールがそろってきており、プログラミングの知識をそれほど持たない人でも、スクレイピングができるようになってきた。つまり敷居が低くなってきたわけだ。
それでは具体的に、スクレイピングするには、どのような技術を使うのか。後編では、そのあたりの事情を見ていこう。
今回の連載、第1回目の最後に、あえてスクレイピングされないためには? といった視点でも解説しておこう。
本連載では、「スクレイピングする側」に立った視線で考えていくが、コンテンツの提供者側から見れば、汗して作ったコンテンツそのものを「まるごと」流用されることなどは、許し難いものだろう。
この連載では、スクレイピングの技法を、随時説明していく。その技法を見ると分かるが、HTML中の「特定の要素」を抜き出すことによって成り立つ。このため、スクレイピングを防ぐには、“動的に要素を作ればよい”ということになるわけだ。すべての要素を動的に、ということは至難だろうが、この点を頭に入れておけばヒントが見つかるはずだ。
1つ挙げるとすれば、コンテンツを静的なHTMLとしてではなく、JavaScriptを埋め込み、JavaScriptのdocument.writeを使ってクライアントサイドで動的に作り出すことにすれば、ある程度、スクレイピングを防止できるだろう。
今後、スクレイピングが流行ってくれば、「スクレイピングする側」と「スクレイピングされる側」とのイタチごっこが激化することになるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.