Pythonを使ってWebスクレイパーを作る
この記事では,Pythonを使ってWebスクレイパーを作ることを目的としています.
今回は非同期通信のWebサイトでスクレイピングする際のやり方を説明します.
非同期通信の場合
非同期通信の場合には大きく分けて2つのやり方があります.
- Seleniumを使う
- 非同期通信の内容をスクレイピングする
Seleniumは環境の準備が大変なので,今回は非同期通信の中身を確認するやり方を説明します.
非同期通信とは?
Webサイトの通信の仕方には,同期通信と非同期通信の2種類があります.
同期通信は,リクエストを投げて,レスポンスを待って,返却されたHTMLを表示する方法です.
それに対して,非同期通信とは,リクエストを投げて,レスポンスを待たずに返却されたタイミングで表示する方法です.そのため,レスポンスが返却されていなくてもブラウザを操作することが可能です.
例として,twitterを見てみます.
おすすめからトレンドに切り変えた際には,ページ全体を更新するのではなく,トレンドの内容のみを通信して,表示させています.
通信内容の確認方法
ブラウザを開きF12キーを押しネットワークの項目を確認するとどのような通信が発生しているのか確認できます.
このサイトでは,画面をスクロールすると,非同期通信が行われ,HTMLが返却され,表示していることがわかります.
このリクエストでは,
https://cocooru.com/mutters?page=3
GETパラメーターでpageの値を設定し,取得しているので,
前回の記事のようにGETパラメータを設定したリクエストを送信すれば,HTMLが取得できます.
注意点としては,非同期通信の場合には,HTML以外が返却されることがあります.
例えば,JSONやプレーンテキストなど,返却されたデータをjavascriptなどで加工して表示する場合もあります.
どういったデータが返却されるのか確認することが重要です.