Python Selenium

【Python】Seleniumでのスクレイピングでよく使うサンプルコードまとめ

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

 

こんにちは、ミナピピン(@python_mllover)です!

 

今回は案件でseleniumを使ったスクレイピングコードを作成する際によく使用するメソッドなどを自分用にまとめておきます。

 

Webページ上のaタグ内のリンクURLを取得(属性取得)

 

HTMLタグの中にあるhref属性のリンクURLテキストなどの属性情報attributeはget_attribute()で取得できます。

 

例:

.get_attribute("href")

 

またタグ内にstyleが埋め込んである場合はhrefをstyleに変更するだけです。

 

.get_attribute("style")

 

タグ内のテキストデータを取得

 

Seleniumで指定した要素の中にあるテキスト情報を取得したい場合は.textを使う。

 

 

※古いSeleniumのバージョンだとこのメソッドはget_text()で、混同して使用するとNonetype ~~~みたいなエラーになります

 

関連記事:【Python】Seleniumの.textで要素のテキスト内容が取得できない原因

 

表示中のページのHTMLデータを取得する

 

seleniumで表示中のページのHTMLを取得する時には.page_sourceを使う

 

# 現在のURLを取得する
url = driver.page_source
print(url) # 'https://xxxxx.com'

 

これで soup = BeautifulSoup(driver.page_source, ‘html.parser’) とすることでseleniumで表示させているページのhtmlをそのまま取得しjavascriptなどで動的に表示されるコンテンツなどもスクレイピングすることが可能になります。

 

表示中のページのURLを取得

 

表示中のページのURLを取得は.current_urlで行えます。

 

driver.current_url

 

Webdriverの更新を自動化する

 

Seleniumの欠点としては普段使いのPCなどで使用するとクロームのバージョンが自動でアップデートされてドライバーのバージョンと合致しなくなりSessionID errorなどが起こりがちなので、ドライバーの更新を自動化しておくのがオススメです

 

関連記事:【Python】Seleniumで使用するWebDriverの更新を自動化してコードの挙動を安定させる

 

表示中のページの更新(リロード)

 

driver.refresh()

 

ブラウザのサイズを最大化する

 

#ブラウザのサイズを最大化する
driver.maximize_window()

 

ブラウザサイズ指定

 

# ブラウザを1200×1000で固定
driver.set_window_size('1200','1000')

 

フレキシブルなサイトだとブラウザサイズでHTMLの配置が換わることがあるためブラウザサイズは固定したほうがコードの安定性が高くなります。

 

ページのスクロール

 

スクロールする方法は色々ありますが、Seleniumからjavascriptを利用してスクロールするのが一番安定性が高い手法だと思われます

 

# ブラウザをスクロールする
driver.execute_script("window.scrollBy(0, 1000);")

 

追記:効かない場合は下記記事参照

関連記事:Seleniumでページスクロール(window.scrollTo)が効かない時の代替方法

 

フレームの切り替え

 

# frameを切り替える(frame名はページ内のframeタグのname属性を指定)
driver.switch_to.frame('フレーム名')

 

古いバージョンだとswitch_to_frame というメソッドになっているのでそれで実行すると以下のようなエラーになってしまうので注意です。

Message='WebDriver' object has no attribute 'switch_to_frame'

 

またフレームが複数あって切り替える場合はフレーム内から別のフレームへの移動はno such a element になってしまうので、以下のメソッドでデフォルトの要素に戻る必要があります。

 

# デフォルトのフレームに戻る
driver.switch_to.default_content()

 

要素をクリックする

 

Seleniumを介してWebページ上のボタンやチェックボックスやリンクへのクリックは以下のようにその要素を指定した状態で、click()を実行することで実装できます。

 

#ボタンをクリックする
button = driver.find_element_by_xpath("/html/body/~~/input")
button.click()

 

参考:【2021年版】Python+Seleniumでツイッターに自動でログインしてツイートする

 

フォームに文字を入力する

 

フォームへの文字や数値の入力は.send_keys('送信したい情報')で実装できます。

 

texts = driver.find_element_by_xpath("/html/body/~~/input")
texts.send_keys('テスト')

 

またフォームの入力欄を元の何も入力されていないクリアな状態にしたい場合は以下のように記述します。

 

texts = driver.find_element_by_xpath("/html/body/~~/input")
texts.clear()

 

参考:【2021年版】Python+Seleniumでツイッターに自動でログインしてツイートする

 

セレクトボックスから要素を選択する

 

from selenium.webdriver.support.select import Select

# セレクトボックス
dropdown = driver.find_element_by_xpath("/html/body/form/~~/select")
select = Select(dropdown)

# セレクトボックス2番目の要素を選択
select.select_by_index(1)

 

参考:https://yuki.world/selenium-select/

 

ブラウザのスクリーンショットを取得

 

driver.save_screenshot('result.png')

 

終わり~参考書籍紹介

 

 

 

 


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

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

過去の案件事例:

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

これまでの案件例を見る

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


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

コメント

  1. […] 関連記事:【Python】Seleniumでスクレイピングする際によく使うメソッドのまとめ […]

  2. […] 関連記事:【Python】Seleniumでのスクレイピングでよく使うサンプルコードまとめ […]

  3. […] 関連記事:【Python】Seleniumでのスクレイピングでよく使うサンプルコードまとめ […]

  4. […] 関連記事:【Python】Seleniumでのスクレイピングでよく使うサンプルコードまとめ […]

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