目的
スクレイピングツールで、画面表示しながら動いていたものをヘッドレスモードに変更しようとした時に、少しハマったので備忘として記録。
エラー内容
driver.get('https://xxxxx.jp/')
したときに以下エラーが発生。
unknown error: net::ERR_CONNECTION_TIMED_OUT
sample.py(実行したときのコード)
from msedge.selenium_tools import Edge, EdgeOptions
# Edgeのオプション
options = EdgeOptions()
options.use_chromium = True
options.add_argument('--headless')
# webdriver起動
edgepath = "C:\xxxxx\msedgedriver.exe"
driver = Edge(edgepath, options = options)
# 情報取得
driver.get('https://xxxxx.jp/') ←★ここでエラー!!
原因
ツール実行環境がプロキシサーバ経由で、インターネットにアクセスしている。
画面表示して実行する場合だとWindowsの設定を参照してスクレイピング対象のWebサイトにアクセスできていたが、ヘッドレスモードで起動するとプロキシ設定が参照されない模様。
以下のようにオプションにプロキシサーバの設定を追加することでエラーが解消された。
対応
EdgeOptionsにプロキシサーバの情報を設定
sample.py(対応後のコード)
from msedge.selenium_tools import Edge, EdgeOptions
# Edgeのオプション
options = EdgeOptions()
options.use_chromium = True
options.add_argument('--headless')
# プロキシサーバの設定を追加
proxy_address = "xxx.xx.xx.xx:8080"
options.add_argument('--proxy-server={}'.format(proxy_address))
# webdriver起動
edgepath = "C:\xxxxx\msedgedriver.exe"
driver = Edge(edgepath, options = options)
# 情報取得
driver.get('https://xxxxx.jp/')
最後に
AWSを使ったサーバーレスアプリの開発方法を紹介しています。
こちらもぜひご覧ください。