saisaikenkenの「してみよ」ブログ

~~~ 仕 事 と 趣 味 の 垣 根 を 無 く し て み よ ~~~

MENU

SeleniumでWebスクレイピングしてみよ④

Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる! [ 森 巧尚 ]

価格:2,420円
(2021/9/26 23:14時点)
感想(1件)

saisaikenken.hatenablog.com
↑↑↑こちらの続き↑↑↑

前記事の復習

①URL取得
②ページタイトル取得
スクリーンショット取得

from selenium import webdriver

d = webdriver.Chrome(executable_path='/mnt/c/chromedriver_win32/chromedriver.exe')

d.get('https://www.google.co.jp')
c_url = d.current_url    #①
title = d.title    #②
d.get_screenshot_as_file('./screenshot.png')    #③

d.quit()

アクセスしたWebページから要素をいろいろ取得してみよ

要素取得

chromeブラウザでF12を押すと開発者ツールが開く。
要素を取得するには、開発者ツールの操作が必要。
開発者ツールについては後日まとめてみよ。
以下、開発者ツールをヒントに各属性(代表的なclass、id、name)で要素を取得してみよ。

class

f:id:saisaikenken:20210930153404p:plain
class

elm_byclass = d.find_element_by_class_name('gb_f')

id

f:id:saisaikenken:20210930153802p:plain
id

elm_byid = d.find_element_by_id('gbqfbb')

name

f:id:saisaikenken:20210930154101p:plain
name

elm_byname = d.find_element_by_name('btnK')

コードまとめ

from selenium import webdriver

d = webdriver.Chrome(executable_path='/mnt/c/chromedriver_win32/chromedriver.exe')

d.get('https://www.google.co.jp')
elm_byclass = d.find_element_by_class_name('gb_f')
elm_byid = d.find_element_by_id('gbqfbb')
elm_byname = d.find_element_by_name('btnK')

d.quit()

print(elm_byclass)
print(elm_byid)
print(elm_byname)

実行結果

<selenium.webdriver.remote.webelement.WebElement (session="15bb3d37327d7e83765106fbfa398312", element="83ff7688-cd3a-4f53-8fb8-ce567b104727")>
<selenium.webdriver.remote.webelement.WebElement (session="15bb3d37327d7e83765106fbfa398312", element="f88c5f58-0956-4aa3-ad02-4f392774dce1")>
<selenium.webdriver.remote.webelement.WebElement (session="15bb3d37327d7e83765106fbfa398312", element="c975bf14-7719-4f40-99da-d76a61516539")>

それぞれの要素(element)が取得できていることが分かる。

その他要素取得方法

上記「class」、「id」、「name」の他にも取得方法はいろいろある。
・find_element_by_xpath xpathから要素を取得する
 d.find_element_by_xpath('<取得したい要素のxpath>')
 xpathとは、、、
 www.octoparse.jp
・find_element_by_link_text linkTextから要素を取得する
 d.find_element_by_link_text('<取得したい要素のlinkText>')
・find_element_by_partial_link_text linkTextの一部文字列から要素を取得する
 d.find_element_by_partial_link_text('<取得したい要素のlinkTextの一部>')
・find_element_by_tag_name タグ名から要素を取得する
 d.find_element_by_tag_name('<取得したい要素のtag>')

次回は、取得した要素からいろいろ操作してみよ。