Selenium

【Python】Seleniumのヘッドレスモードでサイトが表示されない場合の対処法

この記事は約2分で読めます。

 

Seleniumでのスクレイピングプログラムを作成していたところ、実際にブラウザ起動時はちゃんとスクレイピングできていたにも関わらず、ヘッドレスモードに切り替えた時だけページの取得が上手くできない事象に遭遇したので、解決法をメモしておきます。

 

具体的にはGoogleChromeのヘッドレスモードでdriver.get()でサイトにアクセスした際、Javascriptの非同期処理で表示されている部分がうまくレンダリングされないケースがあり、ページのbodyタグが空だったり一部のコンテンツが表示されないことがあります。

 

スポンサーリンク
スポンサーリンク

解決法

 

FireFoxを使う

 

ブラウザを起動させる場合だとプログラムは正常に動作していて、Chromeのヘッドレスモードにするとプログラムをうまく動作しなくなる場合はFireFoxに切り替えるとうまくいく可能性があります。

コードは以下のような感じです

 

<SeleniumでFireFoxをヘッドレスモードで起動するサンプルコード>

from selenium import webdriver
from selenium.webdriver import FirefoxOptions # 追加
from selenium.webdriver.support.ui import WebDriverWait

options = webdriver.FirefoxOptions() # オプションもfirefox用に変更、記述方法に変更はほぼ無し
options.add_argument("--headless") # ヘッドレスモード指定
options.add_argument("--no-sandbox")

driver = webdriver.Firefox(options=options) # ここでfirefoxを起動するように変更
url = "https://twitter.com/home" # 例でTwitterのURL
# サイトにアクセス
driver.get(url)

# ヘッドレスモードで表示されている画面のスクショを取得
driver.get_screenshot_as_file('screenshot.png')

# ブラウザーを終了
driver.quit()

 

これでも症状が変わらない場合はサイトのBOT判定などに引っ掛かっている可能性をあると思います

では~


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました