この記事について
プレゼンテーションとしても非常に重宝しますし、高齢者の在宅介護などで各種動画サイトで視聴プログラムを組んであげることもできるので便利ですね。
Python + Seleniumで様々なウェブサイトの動作を自動化させることができます。
例えばこちら。
大好きなYoutubeチャンネルを操作することなく、視聴するためのプログラムです。
Seleniumを使うためのWebDriverの準備などもこちらのページで紹介していますので参照してください。
Seleniumを使ってYoutube動画を自動再生するテスト
Pythonの環境構築がまだの方はこちらの記事で完了しますので参照してください。
importから基本操作まで
from selenium import webdriver
from time import sleep
import random
seleniumをインポートし、Sleep機能もインポートしておきましょう。
ウェブサイトの読み込み時間等を考慮する必要がありますので、2〜3秒想定しておかなければいけません。
ウェブサイトの読み込みと次の処理が間に合わない場合はエラーとなります。
driverが操作するブラウザを指定する
#Chromeを操作
driver = webdriver.Chrome()
#Firefoxを操作
driver = webdriver.Firefox()
Google Chromeだけでなく、Firefoxも同じように操作可能です。
webdriverはPATHの通っている場所に配置するようにしてくださいね。
ちなみにFirefoxといえば、開発にRustが使われていることで有名です。
よく使うアクションのまとめ
Seleniumはブラウザの操作に使うだけですから操作内容はそんなに多くないかと思います。
好きなウェブサイトを見る時に普段私たちが使っている動作でよく使いそうなものだけまとめておきます。
特定のサイトに訪問する
get関数を使用します。
driver.get("https://kotarohattori.com")
仮にKotaro Studioのアドレスを貼っています。
特定の文字のリンクをクリックする
link = driver.find_element_by_link_text("M1 Mac以降の Python 環境構築 [完全保存版]")
link.click()
当サイトの人気の記事一覧に出てくる記事のタイトルを入れています。
タイトルが決まっている場合はそのまま正確に入力してください。
link.click()
でそのリンクをクリックさせることができます。
Googleの検索エンジンで特定の文字を検索する
Googleで検索する方法はまず先述のget関数で検索エンジンのトップを表示させます。
driver.get("https://www.google.com/")
次に検索エンジンのボックス要素を指定します。
search = driver.find_element_by_name('q')
指定したら検索したいワードを入力します。
search.send_keys('DPA4006 ピアノ')
例えば当サイトが検索順位1位(2022年3月時点)を獲得しているDPA4006 ピアノ でテストしてみています。
入力したら検索ボタンをクリックさせます。
search.send_keys(Keys.RETURN)
今回はリターンキーを指定していますが、こちらは任意のキーをアサインすることができます。
#以降で使用するelementを生成
element = driver.find_element_by_tag_name('タグ名')
#入力する <input>など
element.send_keys('入力したい文')
#入力を消す <input>など
element.clear()
#送信 <form>など
element.submit()
検索結果から自動で任意のアドレスをクリック(要素の抽出)
さて、検索結果が出たら、さらにその結果の中から自動でクリックして移動しましょう。
link = driver.find_element_by_class_name("yuRUbf")
yuRUbfはDPA4006 音質チェックという記事のIDになります。
デベロッパーツールを開く(ショートカット)
Shift + Command + C
Option + Command + I
いちいちタブから開いていると要素の抽出に時間がかかりますので、基本的にはショートカットで開くようにしてください。
IDの抽出はデベロッパーツールを使用します。

右上のメニュー画面からデベロッパーツールを表示させます。
Seleniumを使用する際はほとんどの操作でこのデベロッパーツールを使いますので、ショートカットで覚えておきましょう。
デベロッパーツールを出したらこの矢印のボタンを押せば要素をハイライトしてくれるようになります。

こんな感じでハイライトになります。

ハイライトで指定した状態でデベロッパーツールを見ると、全体を俯瞰で見ることができるので、要素を抽出してください。
筆者の記事のケースだとIDはここに表示されています。

各要素の抽出メソッド
もちろん各要素はIDじゃなくてもOKです。
ウェブサイトによって最適な要素を選択し、クリックしてください。
デベロッパーツールで各要素は全体をクリック(右)しタブを出してコピーから要素を指定してコピーできます。

#タグ名で検索
element = driver.find_element_by_tag_name('tag_name')
#タグ名で検索(子要素を指定)
element = driver.find_element_by_tag_name('div>a)
#クラス名で検索
element = driver.find_element_by_class_name('class_name')
#idで検索
element = driver.find_element_by_id('id')
#name属性で検索
element = driver.find_element_by_name('name_attr')
#xpathで検索
element = driver.find_element_by_xpath('xpath')
#cssセレクタで検索
element = driver.find_element_by_css_selector('css_selector')
#リンクのテキストで検索
element = driver.find_element_by_link_text('sign in')
#リンクのテキスト部分一致での検索
element = driver.find_element_by_partial_link_text('sign in')
ブラウザを終了させる
driver.quit
で対象のドライバーを終了させることができます。
ここまでの動作でのサンプルコード
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
#ランダムを使うとより人間っぽく動作します。
import random
#ランダムを定義してください。
waitsec=random.randint(5,30)
viewsec=random.randint(30, 300)
PATH = 'PATHが通っている任意の場所'
driver = webdriver.Chrome(PATH)
driver.get('https://www.google.com/')
search = driver.find_element_by_name('q')
search.send_keys('DPA4006 ピアノ')
search.send_keys(Keys.RETURN)
sleep(4)
driver.implicitly_wait(10)
link = driver.find_element_by_class_name("yuRUbf")
link.click()
sleep(viewsec)
link = driver.find_element_by_link_text("ペーパーハウス 挿入歌〜Bella ciao ピアノソロアレンジ")
link.click()
sleep(viewsec)
link = driver.find_element_by_link_text("【最新2022年版】アルゼンチンの物価と暮らしのポイント")
link.click()
sleep(viewsec)
link = driver.find_element_by_link_text("21世紀の人気美人ピアニスト達 7人")
link.click()
sleep(viewsec)
sleep(2)
driver.quit
print("お疲れ様でした。")
さて、これで、Googleの検索画面から、「DPA4006 ピアノ」と検索して、出てきた検索結果から当サイトの「DPA4006 音質チェック」の記事をクリックし、サイドバーのよく読まれる記事から人気の記事の指定されたタイトルをクリックするプログラムができました。
各記事のリーディング時間はそれぞれ、viewsecでランダム定義されています。
もちろんランダムにしない場合はそのままsleepを使用するか、driver.implicitly_wait(10)を使用してください。
戻る / 進む
#戻る
driver.back()
#進む
driver.forward()
まとめ
- デベロッパーツールを駆使して要素をしっかり抽出する。
- 右クリック(link.click())を忘れない。
- 悪用しない。
公式のメソッドリスト
公式のリストをリンクしておきます。
すごくわかりやすい動画
こちらのYoutuberさんの動画ではかなりわかりやすく解説してくれていますので参考にしてみてください。
ウェブサイトを使ったプレゼンテーションなどには原稿の時間などを合わせて構成すれば大活躍しそうですよね。
こちらの記事もいかがですか?
プログラミングやテクノロジーに関する記事をまとめています!
Google検索ランキングで1位獲得実績ありの人気記事! M1 Mac以降の Python 環境構築 [完全保存版] ほぼ英語クラスの馴染みやすさが人気のPythonの全体像をほぼ1記事で理解できるのはこれ! まずはこれだけ Python基礎からサンプルプログラム いつもチェックする日課の記事やサイト、ページなどがあればセレニウムを使用してかなり細かく動作を自動化することができます。 Seleniumを使ってGoogle検索 ~ サイトの巡回までをプログラム Xサーバーをモデルにしています。
APIで自動トレードシステムなんかを構築したい場合は24時間働き続けてくれるスタイルが必須ですよね。 Xserver SSH接続の設定とAnaconda3のインストール
速度が早いのと対応も丁寧で老舗なのでおすすめのサーバーの一つです。
サーバーをこれから開設する方は是非VPNも契約しておきましょう。


少し知っているだけで見える世界が全然変わってきます。 【環境構築】Rust M1 Mac / コンパイル言語
プロフィール

-
音大を卒業後ピアニストとして活動。
日本で活動後北欧スウェーデンへ。
アーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。
その後ドイツ・ケルンに渡りAchim Tangと共にアルバム作品制作。
帰国後、金田式DC録音の第一人者:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入り。
独立後音楽レーベル「芸術工房Pinocoa(現:Kotaro Studio)」を結成。
タンゴやクラシックなどアコースティック音楽作品を多数プロデュース。
大阪ベンチャー研究会にて『芸術家皆起業論~変化する社会の中、芸術家で在り続けるために』を講演。
その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。
村上宏治氏の元で本格的に写真、映像技術を学ぶ。
祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。
現在はKotaro Studioにて『あなたのためのアートスタジオ』音と絵をテーマに芸術家として活動中。
2023年より誰かのための癒しの場所『Curanz Sounds』をプロデュース。
Camera2023.06.03【スタジオ厳選】旅行に持っていくべきカメラ13選
Web2023.05.311ヶ月千円で世界最高のデザイナーを雇うたった一つの方法
Audio2023.05.30【2023年最新】失敗しないおすすめのヘッドホン特集
Audio2023.05.292023年失敗しないおすすめマイクロフォンまとめ