4章Webクローリングのモデル

クリーンでスケーラブルなコードを書くことは、データや入力に対してコントロールを握っているときでも容易ではありません。Webクローラのコードでは、さまざまなWebサイトからさまざまなデータをスクレイピングして格納する必要がありますが、プログラマにはコントロールする権限がありませんから、組織運営上の課題も含めてはるかに困難なことになります。

さまざまなWebサイトからニュースの記事やブログを集めることを依頼されたとしましょう。Webサイトによって、テンプレートもレイアウトも異なります。あるWebサイトでは、記事のタイトルがh1タグにあり、別のWebサイトでは、h1タグにはWebサイトのタイトルがあり、記事のタイトルは<span id="title">に書かれています。

スクレイピングするWebサイトごとに、制御を柔軟に変更できるようにして、大量のコードを新たに書き加えなくても、新たなWebサイトにも、既存のWebサイトの変更にも迅速に対応できるようにしなければなりません。

最終的には、同じ製品の価格比較ができるように、製品価格をさまざまなWebサイトからスクレイピングするよう依頼されることもあるでしょう。価格は、さまざまな通貨で表示されており、別のWeb以外の情報源からの外部データと組み合わせる必要もあるでしょう。

Webクローラのアプリケーションはほとんど無限といえますが、大規模でスケーラブルなクローラのパターンは、数個のうちのどれかに限られます。これらのパターンを学び、使われる状況を把握すれば、Webクローラの保守性と頑健性を高めることができます。

本章では、データの種類がレストランの評価、ニュース記事、会社情報のように限られ、データをPythonオブジェクトとしてデータベースに格納するWebクローラに焦点を絞ります。 ...

Get PythonによるWebスクレイピング 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.