【Python】seleniumをバックグラウンドで実行する【初心者向き】
前回解説いたしました、seleniumモジュールを使った自動検索をご紹介しました。
今回はその番外編ですが、seleniumをバックグラウンドで実行するためのコードを紹介します。
目次(クリックで読みたい部分にジャンプできます)
背景
前回、seleniumを使ってChromeで自動検索するコードを解説いたしました。
そのときでは、Googleのタブを出して検索をするようにしていました。
しかし、検索を複数回連続して行う場合などは、わざわざタブを出さなくてもよいと思います。
そのような場合のために、seleniumをバックグラウンドで実行する方法を紹介します。
実装内容は単純なものなので、コピペして使っていただければと思います。
今回の実装内容は、以前の「seleniumで自動検索する」記事で紹介したコードをそのまま用いています。
そちらも併せてご覧いただくとさらに理解が深まるかと思いますので、見ていない方はそちらも見てみてください。
実装内容
#import文
from selenium.webdriver.chrome.options import Options
#headlessを指定する
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
バックグランド実行は、「ヘッドレス」とも言います。
書き換えるところは、seleniumでChromeドライバーを指定する以下のところです。
driver = webdriver.Chrome()
この引数に、optionを設定しヘッドレス設定を組み込みます。
なので、すでにseleniumで実行しているコードがある方は、Chromeドライバーの箇所を上記のように修正するとよいでしょう。
コードがない方は、以下に以前紹介した「seleniumを用いた自動検索」をヘッドレスで実行するバージョンを載せていますので、参考にしてみてください。
コピペしても動くはずです。
「seleniumで自動検索」をバックグランド実行(コード例)
#googleで検索し、キーワードの上位検索結果を取得する
#ヘッドレスChromeで操作する
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
from bs4 import BeautifulSoup
url = "https://www.google.com"
keyword="スクレイピング"
options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.get(url)
search = driver.find_element(By.NAME,"q")
search.send_keys(keyword)
search.submit()
soup = BeautifulSoup(driver.page_source,"html.parser")
results = soup.find_all("h3",attrs={"class":"LC20lb"})
for i, result in enumerate(results):
print("%d: %s" % (i + 1, result.get_text()))
driver.quit()
まとめ
今回は、自動検索モジュールseleniumをバックグラウンド実行するための方法をご紹介しました。
Pythonでスクレイピングする同様のモジュールとして、BeautifulSoupも有名です。
以下の記事では、BeautifulSoupを用いたスクレイピングを初心者でもわかりやすいレベルで解説しています。併せて読んでみてください。