Go言語で「agouti」というライブラリを使用し、WebDriverを「ChromeDriver」にしてChromeを動かすとき、「ChromeOptions」を設定してなにかしらの制御ができる
ChromeOptionsを設定することで、
「PDFのURLにアクセスしたときにブラウザで表示せず、ダウンロードする」ことができる
以前、pythonでChromeDriverを使ってPDFをダウンロードする物を作った
pythonの参考ページ→「Selenium3のChromeDriverでpdfをダウンロードする」
で、Go言語のときのChromeOptionsの設定の書き方を調べた結果、下の記述で同様に動かせたのでメモ
package main
import (
"github.com/sclevine/agouti"
"time"
)
func main() {
agoutiDriver := agouti.ChromeDriver(
// ここでChromeOptions
agouti.ChromeOptions("prefs", map[string]interface{}{
"download.default_directory": "D:\\",// 保存先を「Dドライブ直下」に指定している
"download.prompt_for_download": false,
"download.directory_upgrade": true,
"plugins.plugins_disabled": "Chrome PDF Viewer",
"plugins.always_open_pdf_externally": true,
}),
agouti.ChromeOptions("args", []string{
"--disable-extensions",
"--disable-print-preview",
"--ignore-certificate-errors",
}),
// ここまで
agouti.Debug,
)
agoutiDriver.Start()
defer agoutiDriver.Stop()
page, _ := agoutiDriver.NewPage()
page.Navigate("http://example.com/sample.pdf")// URLは記述例なので、適当に変えて
time.Sleep(10 * time.Second)
}
ChromeOptionsの説明:「Capabilities & ChromeOptions – ChromeDriver – WebDriver for Chrome」
上記のサイトのページの上から半分くらいにある「chromeOptions object」の項目に「agouti.ChromeOptions(“args”, ***)」で指定している「”args”」などの説明がある
自分のコードを例に、使っている「”args”」と「”prefs”」は以下のように書いた
「”args”」は「Type」が「list of strings」なので、Go言語の「[]string{}」
「”prefs”」は「Type」が「dictionary」なので、Go言語の「map[string]interface{}」
調べてた時に参考になったページ→「Support headless Google Chrome (and Chromium) · Issue #109」
1つ困っていることがあって、
「ダウンロード中にブラウザを閉じるとダウンロード失敗になるので、ダウンロードが終わるまで待機する」みたいな方法を知らないので
31行目に「time.Sleep(10 * time.Second)」(10秒待つ)記述をしている
わかったら書く()

















コメントを残す