質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Q&A

解決済

1回答

1332閲覧

ヘッドレスchromeでパスワードを入力した先のページをキャプチャしたい

rumachi

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

0グッド

0クリップ

投稿2020/12/24 08:58

前提・実現したいこと

前回前々回と同様に、VBAからヘッドレスchromeで
WEBページのキャプチャを撮る方法についての質問です。

今回は、formにパスワードを入力した先のページをキャプチャする方法で躓いています。

試したこと

調べたところ、Pythonでの方法なら見つかったのですが
VBAマクロでの書き方が分かりません。

※下記は「こんなことがしたいんだな」程度に捉えてください(Pythonは触ったことがありません)。
参考動画:https://www.youtube.com/watch?v=f8FXUUQ4uRA

Python

1from selenium.webdriver.chrome.options import Options 2options = Options() 3options.add_argument('--headless') 4browser = webdriver.Chrome(options=options) 5url = "http://●" 6browser.get(url) 7 8sleep(4) 9 10elem_password = browser.find_element_by_id('●パスワード入力欄のID') 11elem_password.send_keys('●パスワード') 12 13sleep(1) 14 15elem_login_btn = browser.find_element_by_id('●ログインボタンのID') 16elem_login_btn.click()

改良したいコード

VBA

1Function capture() 2 3Dim SaveDir As String 4Dim cmd As String 5Dim i As Long 6Dim rc As Long 7 8For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row 9cmd = "" 10cmd = cmd & "c:\Program Files (x86)\Google\Chrome\Application\chrome.exe" 11cmd = cmd & " --headless" 12cmd = cmd & " --ignore-certificate-errors" 13cmd = cmd & " --disable-gpu" 14cmd = cmd & " --hide-scrollbars" 15 16 17'●このあたり? 18 19 20cmd = cmd & " --screenshot=c:\HCcapture\" & Cells(i, 2) & ".png" 21cmd = cmd & " --window-size=1920,3200" 22cmd = cmd & " " & Cells(i, 3) 23rc = Shell(cmd, vbHide) 24Debug.Print i & "-" & Now 25Application.Wait Now + TimeValue("0:00:05") 26DoEvents 27Next 28 29MsgBox "キャプチャが完了しました", vbSystemModal 30 31End Function

上記VBAの「●このあたり?」に同様の処理を入れられればよいのでは? と考えています。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

調べてみましたが出来ないと思います。

たとえばクッキーファイルを指定したり、
フォームの要素を指定するための起動オプションが用意されていないです。

VBAでスクレイピングするなら以下どちらかの方法がいいと思います。
https://qiita.com/SoreKiita/items/4b4c845b7378f6765704
https://excel-ubara.com/excelvba4/EXCEL_VBA_401.html

投稿2020/12/26 06:11

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rumachi

2020/12/26 06:48

ご回答ありがとうございます! やっぱり…無理なんですね…… 前任者の使っていたSeleniumならほんの少しだけ触ったことがあるので、 いただいたURLを参考に調べてみます! フォーム要素のIDを指定できれば何とかなるのでは、と 当りを付けていましたが、クッキーも関係あるのですね…… まだまだ分からないことだらけです……
rumachi

2021/05/31 11:02 編集

どうにかVBA+seleniumで期待通りの動きをするものが完成しました。 ただ、一ページキャプチャする毎に サイトログイン→会員ログインページ→目的のページ と遷移する作りになってしまいました。 処理件数が増えるとサーバに負担をかけてしまいそうなので、 まだ改善の必要があると考えています……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問