helper.chromeDriver module

Selenium Chromeドライバのヘルパー

class helper.chromeDriver.ChromeDriver(value_object: ChromeDriverValue | str = None, selectors: dict = None, download_path: str = 'D:/git/igaponr/training/python/Web_scraping/helper/../download')[ソース]

ベースクラス: object

chromeドライバを操作する

サンプル

>>> helper = ChromeDriver(url="https://www.google.com", selectors={"title": [(By.TAG_NAME, "title", lambda elem: elem.text)]})
>>> print(helper.get_items())
{'title': ['Google']}
>>> helper.destroy()
back() None[ソース]

(画面遷移有)ブラウザの戻るボタン押下と同じ動作

chrome_path = '"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"'
close(window_handle=None)[ソース]

openで開いた画面の内、指定の画面か、現在の画面を閉じる

パラメータ:

window_handle -- 閉じる画面のハンドル

例外:

ValueError -- 指定のwindow_handleがリストに存在しない場合

destroy() None[ソース]

chromeが開いていれば閉じる

download_image(url: str, download_image_path: str = None) None[ソース]

(画面遷移有)urlの画像を保存する(open_new_tab → save_image → closeする)

パラメータ:
  • url (str) -- 画像のurl

  • download_image_path (str, optional) -- ダウンロード先のパス。指定しない場合は、インスタンスの download_image_path を使用する

download_path: str = 'D:/git/igaponr/training/python/Web_scraping/helper/../download'
driver_path = 'D:\\git\\igaponr\\training\\python\\Web_scraping\\helper\\driver\\chromedriver.exe'
static fixed_file_name(file_name: str) str[ソース]

ファイル名の禁止文字を全角文字に置き換える

パラメータ:

file_name -- 置き換えたいファイル名

戻り値:

置き換え後のファイル名

static fixed_path(file_path: str) str[ソース]

フォルダ名の禁止文字を全角文字に置き換える

パラメータ:

file_path -- 置き換えたいフォルダパス

戻り値:

置き換え後のフォルダパス

forward() None[ソース]

(画面遷移有)ブラウザの進むボタン押下と同じ動作

get_items() dict[str, list[str]][ソース]

スクレイピング結果を取得する

戻り値:

スクレイピング結果

例外:

ValueError -- スクレイピング結果が存在しない場合

get_selectors() dict[str, list[tuple[By, str, Callable[[WebElement], str]]]][ソース]

セレクタを取得する

戻り値:

セレクタ

例外:

ValueError -- セレクタが存在しない場合

get_source() str[ソース]

(画面依存)現在の画面(chromeで現在表示しているタブ)のソースコードを取得する

戻り値:

ソースコード

戻り値の型:

str

get_url() str[ソース]

URL を取得する

戻り値:

URL

例外:

ValueError -- URL が存在しない場合

get_value_object() ChromeDriverValue[ソース]

値オブジェクトを取得する

戻り値:

値オブジェクト

例外:

ValueError -- value_object が存在しない場合

static is_chrome_running_in_debug_mode() bool[ソース]

Chrome がデバッグモードで実行されているか確認する

戻り値:

Chrome が起動し、9222 ポートに応答する場合. False: それ以外

戻り値の型:

True

next_tab() None[ソース]

(画面遷移有)openで作ったタブ(__window_handle_list)の内、一つ後のタブを表示する

open_current_tab(url: str) None[ソース]

(画面依存)現在表示されているタブでurlを開く

パラメータ:

url (str) -- chromeで開くURL

open_new_tab(url: str) str[ソース]

(画面遷移有)新しいタブでurlを開く

パラメータ:

url (str) -- 開くURL

戻り値:

開いたタブのハンドル

戻り値の型:

str

例外:

Exception -- 新しいタブを開けなかった場合

open_new_tabs(url_list: list) list[ソース]

(画面遷移有)新しいタブでurlリストを開く

パラメータ:

url_list (list[str]) -- 開くURLのリスト

戻り値:

開いたタブのハンドルリスト

戻り値の型:

list[str]

previous_tab() None[ソース]

(画面遷移有)openで作ったタブ(__window_handle_list)の内、一つ前のタブを表示する

profile_path = 'C:\\Users\\igapon\\temp'
root_path = 'D:\\git\\igaponr\\training\\python\\Web_scraping\\helper'
save_image(download_file_name, download_ext='.jpg', wait_time=10)[ソース]

表示されている画像を保存する

chromeのデフォルトダウンロードフォルダに保存された後に、指定のフォルダに移動する ダウンロード実行用スクリプトを生成&実行する

パラメータ:
  • download_file_name -- ダウンロードするファイル名

  • download_ext -- ダウンロードするファイルの拡張子。デフォルトは '.jpg'

  • wait_time -- ファイルのダウンロード完了を待つ時間(秒)。デフォルトは 3 秒

例外:

TimeoutError -- wait_time秒以内にダウンロードが完了しなかった場合

save_source(path: str = './title.html') None[ソース]

(画面依存)現在の画面のソースコードをファイルに保存する

パラメータ:

path (str, optional) -- 保存するファイルパス(URLかタイトルを指定するとよさそう)。 デフォルトは './title.html'

scraping(selectors: dict[str, list[tuple[By, str, Callable[[WebElement], str]]]]) dict[str, list[str]][ソース]

現在表示の URL に対してスクレイピングを実行する

パラメータ:

selectors -- スクレイピングする際のセレクタリスト key: スクレイピング結果のキー value: [(By, セレクタ, WebElementに対するアクション)...] のリスト

戻り値:

スクレイピング結果の辞書

scroll_element(element: WebElement) None[ソース]

指定された要素までスクロールする

パラメータ:

element -- スクロール先の要素

value_object: ChromeDriverValue = None
static wait_until(what: Callable, how: Callable, wait_time: int = 3) Any[ソース]

指定の条件が満たされるまで待機する

パラメータ:
  • what -- 実行する関数

  • how -- 条件を判定する関数。Trueを返せば待機終了

  • wait_time -- 最大待機時間(秒)

戻り値:

what関数の戻り値

例外:

TimeoutError -- wait_time秒以内に条件が満たされなかった場合

class helper.chromeDriver.ChromeDriverValue(url: str, selectors, items)[ソース]

ベースクラス: object

Chromeドライバ値オブジェクト

static is_url_only(string: str) bool[ソース]
items: dict = None
selectors: dict = None
url: str = None