.net column
.NET開発者のためのブログメディア

実行環境

[Python]Seleniumでのwaitの方法とは?様々な待機方法を紹介します!

2021年03月22日
SE
PythonでSeleniumを使ったwaitの方法を教えてください。
PM
分かりました。それでは、PythonでSeleniumを使ったwaitの方法について解説いたしましょう。

[Python]Seleniumでのwaitの方法とは?


今回は、PythonでのSeleniumを使った待機方法について説明します。Webページは読み込まれるまでに時間がかかる場合があります。スクレイピングを行う場合、読み込まれるまで待機しなければ、意図した動作はできません。Seleniumでの待機方法について紹介します。

Windows10でPython 3.7を使って開発します。ブラウザはGoogle Chrome(以下、Chrome)を使用します。また、ライブラリは以下をインストールしておいてください。

PythonでのSeleniumを使った待機方法に興味のある方はぜひご覧ください。

待機なし

まずは、待機処理をせずにSeleniumでChromeを動かしてみます。Googleに移動して、検索ボックスに「Python wait」と入力して、検索を実行します。実際のソースコードを見てみましょう。

実行すると、Chromeの自動操作が行われることが分かります。

time.sleepによる待機

単純に待機する方法として、time.sleep()を紹介します。実際のソースコードを見てみましょう。

実行すると、Googleに移動した後に3秒待機することが分かります。time.sleepはスクレイピングの間隔を広げて、サーバの負荷を下げるためには有効です。しかし、待機したからといってWebページが読み込まれることを保証するものではありません。

implicitly_waitによる待機

要素が見つかるまでの間、時間指定で待機するimplicitly_waitを紹介します。実際のソースコードを見てみましょう。

implicitly_waitを使うと、上記のサンプルではfind_element_by_nameなどで要素が見つかるまで最大20秒待機します。要素が見つかればそれ以上待機しません。

では、要素が見つからずにタイムアウトする例を見てみましょう。find_element_by_nameを適当に変更してみます。

実行すると、20秒経過するとNoSuchElementExceptionの例外が発生することが分かります。

untilによる待機

Webページのコンテンツを基準にして待機するuntilを紹介します。実際のソースコードを見てみましょう。

presence_of_element_locatedで、要素がloadされるまで最大20秒待機します。

By.NAMEの個所は、IDやXPATHなども指定できます。実際のソースコードを見てみましょう。try-catchで例外処理を実装することもできます。

SE
PythonでSeleniumを使ったwaitの方法について、よく分かりました。
PM
ご紹介したソースコードを参考に、ご自身でもソースコードを書いて理解を深めてください。

まとめ

いかがでしたでしょうか。PythonでのSeleniumを使った待機方法について説明しました。Webページは読み込まれるまでに時間がかかる場合があります。スクレイピングを行う場合、読み込まれるまで待機しなければ、意図した動作はできません。

time.sleepによる待機、implicitly_waitによる待機、untilによる待機について紹介しました。

ぜひご自身でPythonのソースコードを書いて、理解を深めてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags

Jobs