Help us understand the problem. What is going on with this article?

PythonでSeleniumを使うならWebDriverのラッパーを定義すると見通しがよくなる

More than 1 year has passed since last update.

PythonからSeleniumを扱う場合、書きがちなコードは次の通り。

sample.py
import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

try:
    opt = Options()

    # optの初期化コード

    driver = webdriver.Chrome(options=opt)

    # スクレイピング

finally:
    driver.quit()

この書き方だとスクレイピングの処理が長くなった時に見通しが悪くなりがち。
改良版がこちら。

sample2.py
from webdriver_wrapper import WebdriverWrapper

with WebdriverWrapper():
    # スクレイピング
webdriver_wrapper.py
import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class WebdriverWrapper:
    def __init__(self):
        self._opt = Options()
        self._driver = None
        # optの初期化コード

    def __enter__(self):
        self._driver = webdriver.Chrome(options=self._opt)
        return self._driver

    def __exit__(self):
        self._driver.quit()

コード量は増えたがモジュール毎に役割が明確になったので処理の見通しはよくなった。

Tadahiro_Yamamura
いくらが好き。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away