scoped_dir フォルダは削除して大丈夫!

Selenium Basicを使ってchrom driverでスクレイピングをしていると、「scoped_dir フォルダ」という一時ファイルがTempフォルダに行きます。

「scoped_dir フォルダ」は一時ファイルなので、削除してしまって大丈夫です。

スクレイピングは定期的に行う場合がほとんどだと思うので、「scoped_dir フォルダ」をそのままにしておくとPCのストレージがパンパンになってしまって、最終的にまともにPCが動かなくなります。

ですから、スクレイピングが終わったらTempフォルダの中の「scoped_dir フォルダ」を削除する必要があります。

めんどくさいですね!

Tempフォルダの中を自動的に削除する方法

Tempフォルダの中を削除するにはバッチファイル(bat)を使います。

作り方は簡単、メモ帳に以下のコードを張り付けて、保存の時に拡張子を「.bat」にするだけです。

今回は、バッチファイルのファイル名を「sakujo.bat」とします。

rd %temp% /s /q

md %temp%

このファイルをVBAのスクレイピング処理後に自動的に行うにはどうするか?

VBAからバッチファイルを起動すれば大丈夫です。

VBAからバッチファイルを起動する方法

VBAからバッチファイルを起動する方法は2通りあります。

同期 ・・・バッチファイルの実行結果をVBAで待つ

非同期・・・バッチファイルの実行結果を待たずにVBAでの処理が続行

例えば、ものすごく多くのサイトをスクレイピングする場合、「scoped_dir フォルダ」もすごい速さでたまっていきますので、スクレイピング処理の途中でTempファイルを空にした方が良いと思われます。

そんなに多くのサイトをスクレイピングするわけじゃないなら、非同期でいいと思います。

以下、サンプルコードです。

同期

Sub doukisakujo()
    Dim dProcessId  As Double
    Dim sPath
    
    sPath = "C:\web\test\sakujo.bat"
    
    dProcessId = Shell(sPath)
End Sub

非同期

Sub hidoukisakujo()
    Dim obj As WshShell
    Dim sPath
    
    sPath = "C:\web\sakujo\test.bat"
    
    Set obj = New WshShell
    
    Call obj.Run(sPath, WaitOnReturn:=True)
End Sub