【Selenium Tutorial #2】Webブラウザの自動化 – 要素を検索する

プログラミング

はじめに

先日紹介したChromeの操作を自動化する方法の記事でChromeの操作はできましたか?
前回はChromeを開いてit-engineer.netにアクセスするところまでを紹介しましたが、アクセスしてからブラウザに表示される情報を取得したり、検索フィルードにキーワード入力を行ったり、検索をしたりする操作も自動化しないとアクセスだけできても、あまり役に立たないですよね。そのため、今回は引き続きSeleniumを利用して、PythonでChromeを開いてページにアクセスした後、ページに表示される情報を取得する方法を紹介したいと思います。

要素を検索する

from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path="ここにダウンロードしたWebDriverのパスに書き換えてください。")
#以下は一例
#webdriver.Chrome(executable_path="C:/Users/XXX/Desktop/Work/Selenium_Chrome_Tool/chromedriver_win32/chromedriver.exe")
driver.get("https://it-engineer.net")
time.sleep(4)
driver.close()

前回で紹介していた上記のコードで以下のit-engineer.netにアクセスができました。

これからit-engineer.netのカテゴリの一覧をSeleniumで取得して出力したいと思います。

it-engineer.netのホームぺージ

まずサイトの要素(Element)を取得するためには以下のメソッドを利用して取得できます。

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector
  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

今回は要素のIDを利用して取得するので、find_element_by_idメソッドを利用します。
このメソッドの引数ですが、すでにHTMLやJavascriptを触ったことがある人ならもう分かっていると思いますが、要素(Element)のIDを渡す必要があります。
ElementのIDをChromeで特定する方法は以下の通りです。
まずChromeを開いて、F12を押してください。すると、開発者のウィンドウが表示されます。
そしてElementsタブをクリックして、以下の画像のようにカテゴリの領域にマウスを置いておくとElementsタブでカテゴリElementのIDが「menu-mainmenu」と確認できます。Class Nameでも取得することができますが、今回はElementのIDを使ってElementを取得します。

Chrome Develope で ElementのIDを取得する

取得したいElementのIDが分かったので、メソッドの引数として渡して、Elementを取得します。
以下はサンプルコードです。参照して実行してみてください。

from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path="ここにダウンロードしたWebDriverのパスに書き換えてください。")
#以下は一例
#webdriver.Chrome(executable_path="C:/Users/XXX/Desktop/Work/Selenium_Chrome_Tool/chromedriver_win32/chromedriver.exe")
#Webサイトにアクセスする
driver.get("https://it-engineer.net")
#要素が表示されるまでに時間がかかる場合もあるので、一旦待っておく
time.sleep(4)
#カテゴリ要素をIDで取得する
category_list = driver.find_element_by_id('menu-mainmenu')
#取得したElementのコンテンツを出力する
print(category_list.text)

#Chromeやコマンドプロンプトを閉じる
driver.quit()

これを実行すると、サイトのカテゴリの一覧を以下の画像のように取得できました。

Python で Chromeの動作を自動化した結果

皆さんもうまく操作ができましたか?、もしうまくいかなかったら、コメントをしていただけたら私の分かる範囲で回答いたします。問題なくカテゴリを取得できたら次の記事で検索フィルードを取得して、検索するキーワードを送信して検索する結果を取得する操作を参照して試してください。

お疲れ様でした。

コメント