【Python3】selenium、chromedriverを使ってみる2回目【selenium】

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("http://www.python.org")

time.sleep(5)

driver.close()

ここに前回のソースコードがあるじゃろ

「driver = webdriver.Chrome()」と名前を付けてるので
「driver.get()」のように
「driver.***」で動かせる

メソッドとかいうらしいな?
たぶんあってる

サイトによっては「browser = webdriver.Chrome()」と書いてたりするので
その場合は「browser.get()」のように前の名前が変わる

なんかやる

スクリーンショットを撮る

save_screenshot("ファイル名')

よくあるウィンドウ内の撮影じゃ
seleniumのwebDriverとかいうのが機能を用意してくれている
これをやるとページをjavascript等の読み込みをして、一度表示しきるまで待ってくれる

ajaxとかいう裏でゴソゴソやるのは待てないことが多くてダメ

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

driver.save_screenshot("screenshot.png")

driver.close()

わざわざ「time.sleep」とか書かないで写真取ればページを表示できたか確認できるよね
同じ名前のファイルが既にあると上書きされる

htmlソースを取る

page_source

「いま表示しているページのソースを返す」働きをしている
たぶん

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

get_source = driver.page_source
print(get_source)

driver.close()

「driver」に「page_source」して変数「get_source」に紐付け

get_sourceを「print()」して、コンソールに出力で確認じゃ

ソース全部あったほうが都合がいい時、とは?

リンクを取り出す

とりあえずaタグを探してリンクを取る

「Element」とかいうのを見て、中にあるリンクURLを読み取る、という作りの様子

参考→Selenium API(逆引き)

find_element_by_tag_name("タグ名")  # 最初の1個目

find_elements_by_tag_name("タグ名")  # 有るだけ

これで取れたモノを「print()」に入れてみるとhtmlソースではなく、
「selenium.webdriver.remote.webelement.WebElement」とかなんとか言いよる

おそらく「Element」とかいう情報が取れている感じ

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

e = driver.find_element_by_tag_name("a")  # 最初の1個目

print(type(e))

driver.close()

Elementに対して「属性情報」を取り出す「get_attribute」を使う

get_attribute("属性名")

リンクのURLはaタグの “href” という属性に書かれているので、こうじゃ

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")
e = driver.find_element_by_tag_name("a")  # 最初の1個目

print(e.get_attribute("href"))

driver.close()

ページ内全部のリンクを出す

リンクを全部みつけような
(細かい話は次回以降)

find_elements_by_tag_name() はlist型で格納される

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

es = driver.find_elements_by_tag_name("a")  # 有るだけ
for n in es:
    print(n.get_attribute("href"))

driver.close()

コンソール上にリンクがずらずらと出力されると思われる

テキストファイルに書き出したり、
データベースを持ち出してきて保存、照合とかやって、
前に見たページをもう一度見ないようにするとかできる

ただ、やり方を調べないとわからん

ここらへんで一回いいですかね

 ‘ω’)ノシ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください