今回は、PythonとGoogle Chromeを用いてスクレイピングを実施している際にダウンロードしたファイルのダウンロード完了まで待機する方法を解説します。
ぜひ最後まで読み進めてみてください。
実装する内容
今回紹介するのは、スクレイピング時にファイルのダウンロードが完了するまで処理を待機させる方法です。
ダウンロードしたファイルの結果を用いて続きの処理を行う必要がある場合などは、今回紹介する方法を実施してみてください。
ダウンロードを待機する方法
実装は、「.crdownload」というファイルを用いて行います。
こちらはGoogle Chromeからダウンロード中のファイルに付けられる拡張子となります。
こちらの拡張子のファイルが存在する場合は処理を止めるといった記述を行うことで、ダウンロード完了まで待機を実現することができます。
実際のコードは以下です。
import time
import os
# ダウンロードが完了するまで待機するメソッドを定義
def download_wait(path_to_downloads):
seconds = 0
dl_wait = True
while dl_wait and seconds < 60: # 任意の秒数を指定
time.sleep(1) # 1秒待たせる処理
dl_wait = False
for fname in os.listdir(path_to_downloads):
if fname.endswith('.crdownload'):
dl_wait = True
seconds += 1
return seconds
こちらのメソッドをファイルをダウンロードする処理の後に実行することで、ダウンロードが完了するまで次の処理に行くのを止めることができます。
またこちらのメソッドを実際に使用する際には引数にご自身のダウンロードディレクトリのパスを指定してください。
おわりに
今回は、PythonとGoogle Chromeを用いてスクレイピングを実施している際にダウンロードしたファイルのダウンロード完了まで待機する方法を解説させていただきました。
私もスクレイピングで得たファイルをGoogle Driveにアップロードする際に、ファイルのサイズや回線の状況によってダウンロードにかかる時間に差があり、正しくファイルをアップロードできずに悩んでいました。
その際にダウンロード未完了のファイルの拡張子が「.crdownload」というものになっていることに気づき、このファイルが存在するときは処理を待たせるという上記メソッドを活用することで、うまく動作させることに成功しました。
同じようなことで悩まれていた方の手助けになれば幸いです。
当ブログでは他にもプログラミング学習に関するコンテンツを執筆しております。Pythonでのグローバル変数の使い方の解説記事などもありますので興味がありましたら合わせてご覧ください。
最後まで読んでくださりありがとうございました。
コメント