SlideShare a Scribd company logo
Rseleniumとは
Webアプリケーションのテストを自動化するツールの一つ。
がWebブラウザで操作する代わりに指定された挙動を実行し、
Web上のプログラムの動作検証を行う枠組みを提供する。
“selenium” とは原子番号34の元素、
セレン(元素記号はSe/日本語のセレンは独語由来)のこと。
→自動ログインや自動のクリックができる!!
webからデータを取ってくる(スクレイピング)時に使える
次ページから環境構築を早速していく!
Dockerというアプリをダウンロード
Windows
https://docs.docker.jp/docker-for-windows/install.html#install-docker-desktop-on-windows
Mac
http://docs.docker.jp/docker-for-mac/install.html#install-and-run-docker-desktop-on-mac
M1
https://rion778.hatenablog.com/entry/2021/03/14/174259
※インストール後にWSL2というアプリのダウンロードを求
められたらダウンロードする
Dockerを使ってseleniumサーバを引っ張ってきたりコンテナ
を介してサーバを停止させたり消したりする
https://www.youtube.com/watch?v=DNnW4I43wyU
Chrome driver のダウンロード
Chrome driver はweb driver の一種でこいつがネット上を徘徊して
データを送ってくれる感じ(?)
Chrome driver ダウンロード
ChromeDriver -WebDriver for Chrome - Downloads (chromium.org)
※自分のgoogle chrome と同じバージョンのchrome driver を選ぶ
(じゃないとうまく使えない!)
seleniumサーバを引っ張ってくる
→次のコマンドをターミナル上で実行
docker pull selenium/standalone-chrome
セレンサーバを自分の環境に引っ張ってくる(?)
docker run –d –shm-size=1024m –p 4444:4444 selenium/standalone-chrome
ホストポート4444とコンテナポート4444をつなげてセレンサーバをrun(実
行)させる
-p:つなげる(publish), -d:? , --shm-size=1024m:割り当てるメモリの大
きさ)
これでdockerのContainer/Appsに新しいコンテナができているはず
正しく実行できたかどうかを確認するための方法としてブラウザからweb
ページにアクセスしてみるとよい(次ページ)
ブラウザからセレンサーバが正しく構築できているのかを
確認する方法
ブラウザのURLを打つ欄に「localhost:4444」と打ち込む。
もしくは「自分のIPアドレス:4444」と打ち込む。
こんな画面が出たらok!
※注意※
dockerでの一連の操作はメモリを大量に使うので
使用中はメモリがかつかつになる。。。
ずっとdockerコンテナを走らせているとpcが重くなってしまうので
やりたいことが終わったらDockerのContents/Appsでコンテナを
ストップさせて削除しよう。
(消してもまた同じコマンドをすればすぐにまたコンテナが作れる
あとは自分の行きたいページに行ったり、ログインが必要な場合は
id・パスワードを入れる欄をDOM(DOMについては後で触れる)
ベースで指定してそこに自分のid・パスワードを入れてログインボタンを
クリックする関数を使えばいい
Rseleniumのメソッドの説明はよいwebページがあるのでそちらを参考に
するのもいいかも
https://qiita.com/nozma/items/2731b36db8129439a931
library(httr)
library(rvest)
library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = “xxx.xxx.xxx.x”, ##自分のipアドレス
port = 4444,
browserName = "chrome")
Sys.sleep(5)
remDr$open()
コードを追いながら説明
remoteDriverがwebを徘徊してくれる(?)
・Sys.sleep(5)は5秒パソコンにじっとするように指示する関数
なぜこうするかというと一気にコードを実行すると相手のサーバに負荷がかかる
ため
・remDr$open()はサーバに接続しているらしい
remDr$navigate(“URL”)
Sys.sleep(5)
行きたいURLにremote driverが飛んでくれるメソッド
remDr$maxWindowSize()
remDr$screenshot(display=TRUE)
今いるサイトのスクリーンショットを取ってくれるメソッド
適宜使うことで自分がどんなサイトにいるのかがわかりコードが書きや
すくなる
webElem <- remDr$findElements(using="xpath",value ="/html/body/header/k2-
kite-header-tool-nav-provider/div/div/nav/k2-kite-header-account-
nav/a[2]/span")
DOMベースでサイト上の要素を指定することができるメソッドで、それ
を変数に入れることで指定した部分だけにメソッドが適用できるように
よく使うremDrメソッド
webElem <- remDr$findElement(~) ##引数書くと長くなるので省略
webElem$clickElement()
Sys.sleep(5)
findElementメソッドを使ってベースで指定した要素を
クリックするメソッド
ページを移動することになると思うのでSys.sleepで
ページの読み込み待機をする(多分なくてもいい)
webElem <- remDr$findElement(~) ##引数書くと長くなるので省略
webElem$sendKeysToElement(list(“xxxxxxx”))
またfindElementしたところに対してのメソッドで、
指定した要素を”xxxxxxx”で埋めてくれる(id・パスワード)
remDr$getCurrentUrl
いまいるサイトのURLを返してくれるメソッド
remDr$findElement()の詳しい使い方
1 ブラウザで対象のサイトを開いてF12キーを押す
Macはこのやり方で開発者ツールを開いて
https://applica.info/safari-developer-tool
(メモ)
開発者ツールで出てくるのはhtmlじゃなくてDOMというもので詳し
くは次のサイトを参照
https://www.codegrid.net/articles/2017-newer-dom-1/
2 開発者ツールの左上のポインタのマークのところをクリックし
てサイトの要素をクリックするとその部分のDOMが表示される
3 そのDOMを右クリックして「コピー」から「完全なXpathをコピー」
を選択してxpathをコピーする
4 webElem<-findElements(using = “xpath”,value = “xxxxx”)の”xxxxx”部分に
コピーしたxpathを入れてあげる
→これでDOMの一部を抜粋できた!!
クリックするなりパスワードを入力するなりウェブを抜き出すなりすれば
いいがウェブを抜き出すためにはDOMを処理する必要がある(次ページ)
XpathのほかにもDOMのidやcss形式、classを使った指定方法があるが
使いづらかったので使いたいひとは以下のサイトを参照
https://qiita.com/nakamichi/items/ad186633ae249b26d032
DOMから文章を抽出する
header_large <- unlist(remDr$getPageSource())
%>% read_html()
%>% html_nodes(xpath = "//span[@class = 'cmnc-large']")
%>% html_text()
%>% as.data.frame
getPageSource()メソッドでDOMを取得でき、それをhtml形式に変換し
その中でさらに文章を絞りたければhtml_nodes()を使うこともできる。
そして最後にhtml_text()にいれることでhtmlを人間語にしてくれる。
as.data.frameは見やすい形式にに変換するためにつけた。
Rでマネーフォワードをスクレイピングする - もうカツ丼はいいよな
(hatenablog.com)
わかりやすかった!
【知らなきゃ危ない!】webスクレイピング禁止サイトまとめ | 居酒屋
エンジニア (engineerismydream33.org)
スクレイピングで法を破らないように…
Dockerコマンド一覧 – Qiita
しらなくてもいいかな…
Pythonでスクレイピングのルール(robots.txt)をチェックするツールを作
る – Qiita
スクレイピングで法を破らないように…2(よくわからなかった)

More Related Content

What's hot

報酬設計と逆強化学習
報酬設計と逆強化学習報酬設計と逆強化学習
報酬設計と逆強化学習
Yusuke Nakata
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
Deep Learning JP
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
Yolo v1
Yolo v1Yolo v1
Yolo v1
Takuya Mouri
 
Deep walk について
Deep walk についてDeep walk について
Deep walk について
Tamakoshi Hironori
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
okuraofvegetable
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
Preferred Networks
 
ディープラーニング基礎.pptx
ディープラーニング基礎.pptxディープラーニング基礎.pptx
ディープラーニング基礎.pptx
norimatsu5
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
nishio
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
Kazuaki Ishizaki
 
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
Toru Tamaki
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
harmonylab
 
Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
MapR Technologies Japan
 
Activity-Net Challenge 2021の紹介
Activity-Net Challenge 2021の紹介Activity-Net Challenge 2021の紹介
Activity-Net Challenge 2021の紹介
Toru Tamaki
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
AtCoder Inc.
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
nishio
 
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
Deep Learning JP
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
Masami Ichikawa
 

What's hot (20)

報酬設計と逆強化学習
報酬設計と逆強化学習報酬設計と逆強化学習
報酬設計と逆強化学習
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
Yolo v1
Yolo v1Yolo v1
Yolo v1
 
Deep walk について
Deep walk についてDeep walk について
Deep walk について
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
ディープラーニング基礎.pptx
ディープラーニング基礎.pptxディープラーニング基礎.pptx
ディープラーニング基礎.pptx
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
 
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
論文紹介:InternVideo: General Video Foundation Models via Generative and Discrimi...
 
強化学習 DQNからPPOまで
強化学習 DQNからPPOまで強化学習 DQNからPPOまで
強化学習 DQNからPPOまで
 
Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
 
Activity-Net Challenge 2021の紹介
Activity-Net Challenge 2021の紹介Activity-Net Challenge 2021の紹介
Activity-Net Challenge 2021の紹介
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
 
Linux Namespaces
Linux NamespacesLinux Namespaces
Linux Namespaces
 

Similar to Rselenium Dockerとの接続

Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
Microsoft Corporation
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
onozaty
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
yasukoS
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
Masayuki Wakizaka
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
onozaty
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
 
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
de:code 2017
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1
shotaueda3
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
xyzplus_net
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
teruyaono1
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Kenichi Kambara
 

Similar to Rselenium Dockerとの接続 (20)

Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみようNTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
 
Ja sst東北2013
Ja sst東北2013Ja sst東北2013
Ja sst東北2013
 
Selenium
SeleniumSelenium
Selenium
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
 
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
 
Android勉強会 1
Android勉強会 1Android勉強会 1
Android勉強会 1
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 

Rselenium Dockerとの接続