【python】Google MAPで店舗をスクロールする方法(スクレイピング時に重要!!)

2021年7月24日

Google Map の検索結果をスクロールする方法です。表示された結果を普通にスクレイピングをしても1画面で20件あるのに、10件くらいしか取得できません。原因は検索結果をスクロールさせたタイミングで10件以降の情報を内部的に取得する仕様になっているためです。

スクロールさせるにはいろいろな方法があり、色々と試してみました。

sendkey("Keys.END")

では動かない。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 

で、強制的にスクロールを試みてもだめ。

手動でスクロールさせることはできるので、擬似的に手動でスクロールさせる作戦にしました。

PyAutoGuiを使用する

import pyautogui as pag

pag.moveTo(***,***)
pag.click(***,***)
pag.dragTo(***,***,3,button='left')

マウスカーソルをpythonで制御しスクロールバーを下にドラッグしてスクロールさせます。

スクレーピング中はカーソルの制御をpythonで行うため、他の作業はできません・・。

だから、できるだけPyAutoGuiは使いたくなかった・・。

インストール方法

PyAutoGuiをインストールします。

pip install pyautogui

実際に使用してみる

モジュールをインポートします。

% python 
>>> import pyautogui as pag

pagという名前でインポートしていますが、名前は何でもいいです。

スクロールの座標を取得する

>>> pag.mouseInfo()

実行するとマウスの座標が取得できますのでスクロールバーの上下の座標を取得します。

座標を取得する際はブラウザをフルスクリーン表示したほうが良いです。

>>> pag.moveTo(404,270)
>>> pag.dragTo(404,1215,3,button='left')

上のコードを実行すると座標(404,270)から座標(404,1215)までマウスの左ボタンでドラッグする動きをします。

Gmapのスクレイピングについて調べてもなかなか出てこなかったので記録しておきます。

Chromeドライバー自動更新の記事はこちらから



python

Posted by Next-k