3章Webクローラを書く
ここまでの本書の例題は、少々人工的な単一の静的なページでした。本章では、実世界の問題を見ていきます。スクレイパーが複数のページ、複数のサイトにわたることが含まれます。
Webクローラ(crawler)は、Webを這い回ることからそう名付けられました。本質的なのは再帰です。URLのページ内容を取り出し、他のURLを調べて、そのページを取り出すという作業を無限に行います。
しかし、Webを這い回れるからといって、常にそうすべきだとは限りません。これまでの例で使われたスクレイパーは、すべての必要なデータが1ページに収まっているときに威力を発揮します。Webクローラでは、どれだけの帯域幅を使っているかに十分気を付けねばならず、目標サーバの負荷を軽くできるように、あらゆる努力を払わねばなりません。
3.1 単一ドメインを走査する
「6次のWikipedia」(Six Degrees of Wikipedia)という言葉を聞くのは初めてかもしれませんが、「6次のケビン・ベーコン」なら聞いたことがあるでしょう†1。どちらのゲームもゴールはあり得そうにない2つのトピックの間のリンク(前者の場合は、Wikipediaで互いに参照している項目、後者では、同じ映画に出演している俳優)を、全部で(元の2つを含んで)6以内のリンクの連鎖で見つけることです。
[†1] 訳注:詳しくはウィキペディアの項目「六次の隔たり」参照。
例えば、Eric Idleは、映画「ダドリーの大冒険」(Dudley Do-Right)にBrendan Fraserと共演し、Brendan Fraserは「狼たちの報酬」(The Air I Breathe)にKevin Baconと共演しました†2。この場合、Eric ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access