usage_cookieでは、SeleniumBasicで起動したブラウザのCookie情報の取得や登録、削除ができます。Cookie情報をスクレイピングで収集したい時には役立つかと思います。
今回は、事前に新規ExcelSheetを作成しておきます。シート名は"Cookie"にしておきます。
- 利用目的は業務効率化です。(テスト自動化ではありません)
- ブラウザはGoogleChromeが対象です。(EdgeやFirefoxは対象外)
- 原文のVBAでは現在エラー発生する場合が多いため、修正を加えてます。
Examples.xlsmの保存場所(ここをクリック)
Examples.xlsmが保存されている場所は、SeleniumBasicがインストールされているサブフォルダ内になります。SeleniumBasicのインストール完了時に保存フォルダを確認することができます。ただ、大体以下フォルダのどちらかにファイル保存されています。
- C:\Program Files\Seleniumbasic\Examples\Excel
- shell:Local AppData\SeleniumBasic\Examples\Excel
構文紹介
今回は、ウィキペディアのメインページのCookie情報を取得します。
以下コードです。
Option Explicit
Private Sub Usage_Cookies()
Dim Assert As New Selenium.Assert
Dim driver As New ChromeDriver
driver.Get "https://ja.wikipedia.org/wiki/"
driver.Wait 2000
'cookie名でcookieオブジェクトを取得
Dim cookie As cookie
Set cookie = driver.Manage.FindCookieByName("WMF-Last-Access-Global")
Assert.Equals ".wikipedia.org", cookie.Domain
'cookieの登録
driver.Manage.AddCookie "hoge", "hogehoge"
'取得ページの全cookie情報を取得
Dim maxrow As Long
With ThisWorkbook.Worksheets("Cookie")
For Each cookie In driver.Manage.Cookies
maxrow = .Cells(Rows.count, 1).End(xlUp).row
.Cells(maxrow + 1, 1) = cookie.name
.Cells(maxrow + 1, 2) = cookie.Value
.Cells(maxrow + 1, 3) = cookie.Domain
.Cells(maxrow + 1, 4) = cookie.Path
.Cells(maxrow + 1, 5) = cookie.Secure
.Cells(maxrow + 1, 6) = cookie.Expiry
Next cookie
End With
'cookie情報の削除
driver.Manage.DeleteCookieByName "WMF-Last-Access-Global"
driver.Manage.DeleteAllCookies
driver.Quit
End Sub
解説
Cookieオブジェクトの取得
10行目:Cookie名"WMF-Last-Access-Global"を検索し、cookieオブジェクト(変数)に代入
11行目:".wikipedia.org" = cookie.Domain となっているため、Assert.Equalsを通過
Cookieの登録
14行目でCookie情報を登録します。今回は、name="hoge",value="hogehoge"にしました。
AddCookieメソッドでは、上記以外の要素は任意情報だったため、今回は入力していません。
取得ページの全Cookie情報取得
17~28行目で、取得ページの全Cookie情報を取得して、Excelに出力しています。
cookieオブジェクト(変数)に格納しているプロパティ情報を"Cookie"シートに追加しています。
Excelへの出力結果が以下となりました。7行目に登録したCookie情報(hoge)がありました。
Cookie情報の削除
31行目:Cookie名"WMF-Last-Access-Global"を検索し、削除
32行目:登録されている全Cookieを削除