Python

Pythonでブラウザの要素を取得、操作するには?

Pythonでブラウザの要素を取得、操作するには?

前回、Pythonからブラウザを立ち上げることができました。
次は、テキストボックスに文字を入力したり、ボタンをクリックしたりしたいですね。
というわけで、その方法をまとめてみました。

 

文字を入力したりクリックしたりするには?

「HTML Element」に対して「メソッド」を実行すれば良いです。
日本語で言う「主語」と「述語」のようなもので、「ボタン」を「クリックする」の2つをコードに記述します。
ですので、ブラウザに表示されている「HTML Element」を取得し、それに対して「クリックする」などのメソッドを使います。

 

「HTML Element」を取得するには?

立ち上げたブラウザに対し、「find_element_by_〇〇」を使います。
これを使うと、該当する最初の要素が取得できます。
「find_element_by_〇〇」は8種類あります。

  • find_element_by_id:IDで取得
  • find_element_by_class_name:クラス名で取得
  • find_element_by_tag_name:要素名(タグ名)で取得
  • find_element_by_name:name属性で取得
  • find_element_by_css_selector:CSSセレクタで取得
  • find_element_by_link_text:アンカーリンクテキスト(完全一致)で取得
  • find_element_by_partial_link_text:アンカーリンクテキスト(部分一致)で取得
  • find_element_by_xpath:XPathで取得

該当する2番目以降の要素や、複数の要素を取得したい場合は、「find_elements_by_〇〇」を使います。
種類は同じく8種類あり、「elements」と複数形にするだけです。

 

メソッドの種類は?

主に使うものは2つ。

  • send_keys('〇〇'):文字を入力する
  • click():クリックする

この2つで事足りることが多いようです。
他にもいくつかあるようで、

  • submit():「input type="submit"」に対して実行・送信する
  • clear():テキストボックスを空にする
  • select_by_〇〇:「select」タグに対して、リスト選択をする

があります。

※selectタグについて詳しく書きました。


 

試しにGoogle検索を自動化すると?

from selenium import webdriver
 
Word = input('検索キーワードを入力してください')
 
driver = webdriver.Chrome('【chromedriver.exe】の保存場所')
driver.get('https://www.google.com/')
driver.find_element_by_name('q').send_keys(Word)
driver.find_element_by_name('btnK').submit()

Google検索のサイトはクラス名がランダムっぽいので、固定されているname属性で要素を取得します。
submit()は「btnK」にしていますが、「q」にしても検索されます。

 

まとめ

Pythonでブラウザの要素を取得するには「find_element(s)_by_〇〇」を使い、send_keys()で文字を入力、click()でクリックすることができます。
実際にコードを書くためにはHTMLの解析が肝心で、JavaScriptでさんざんやってきた経験がここで活きてくるとは驚きでした。

-Python
-, , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,