12章APIでクローリング
Webクローラにとって、これまでJavaScriptが致命的なものでした。Webサーバに対して発行したリクエストで、同じリクエストをWebブラウザで発行したのと同じデータが保証されるというのは、いまやインターネットの昔話となりました。
JavaScriptとAjaxによるコンテンツ生成とロードが一般的になっているので、この傾向はますます強まっています。「11章 JavaScriptのスクレイピング」では、この解決法の1つとしてSeleniumを使い、ブラウザでのデータ取得を自動化しました。これは簡単で、ほとんどの場合問題がありません。
問題は、Seleniumのような強力で効果的な「ハンマー」を手にすると、あらゆるWebスクレイピングの問題が、このハンマー用の「釘」に見えてくることです。
本章では、JavaScriptのことは忘れて(実行もロードも関係なしに)、データの源とそれを生成するAPIについて述べます。
12.1 APIの簡単な紹介
REST、GraphQL、JSON、XML APIについては、多数の書籍、講演録、説明が書かれてきましたが、本質的には単純な1つの概念に基づいています。すなわち、APIとは、あるソフトウェアが別のソフトウェアと通信するための標準的な構文を定義するものであり、プログラミング言語や構造は異なっていても問題ありません。
本節では、Web API(特に、Webサーバがブラウザと通信するためのAPI)に焦点を絞り、APIという語をその種のAPIを指すものとして使います。他の文脈では、APIが、例えばJavaプログラムが同じマシンで実行されているPythonプログラムと通信する場合のように、一般的に使われることを忘れないようにしてください。APIは、必ずしも常に「インターネット上で」あることも、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.