25日目エントリーです。いい感じのチュートリアルがないので自分で作ります近頃、自動化とかRPA系のイベントで登壇とかしているせいか、私への弟子入り志願者が増えています。私としてはとても嬉しいですし、育ってくれたら仕事を手伝っていただきたいという気持ちですが、プログラミングの学習サービスは数あれど、seleniumに関するオンライン学習となるとなかなか良いものがありません。毎回1から教えていると時間がいくらあっても足りません。そもそも業務効率化の事業をしているのに、全然効率的ではない。ある程度体系化したものを自分で作って、最初はそのチュートリアルをやってみてもらうということにしました。この記事は私のnoteでも公開します。https://note.mu/katsuyads/n/nb833f7a06b57noteでは2980円とさせていただきますので、もしこのチュートリアルが役に立ったということでしたら購入していただけるとこのブログのサーバー代くらいにはなるかと思います。購入していただいた方にはコメント欄にて質問に回答させていただきます。購入していただかなくても全く問題ありません。このチュートリアルでは基本からseleniumでスクレイピングできるようになるところまでを扱います。出力はcsvにして、エクセルで開いても文字化けしないというところまで作り込みます。このチュートリアルを行う前提チュートリアルを行う上で以下を理解している前提とします。rubyのif文、loop文、each文、配列を理解しているドットインストールやprogateなど無料で学べるサービスもあります。他の言語の知見がある方はすぐに習得可能だと思います。なんとなくわかったという方でも進められるかもしれません。magickがうまく動かないので2.3.3にしています。webdriverは最新が一番安定しており、chromedriverはネイティブのchromeのバージョンがあがると古いものは上手く動かなくなるので最新にしてください。windowsの環境構築は以下で紹介しています。すればいいと思います。driverを宣言するではselenium-webdriverをrubyで動かしてみましょう。いうファイルを作ってテキストエディタで開いてください。driverを立ち上げてみましょう。driverを宣言します。sleepを3秒入れて3秒間表示させてみましょう。chromeが立ち上がって閉じたら成功です。以下のように書き換えてみてください。3このブログが表示されて3秒くらいで閉じたら成功です。演習さっきのコードを書き替えて、googleとyahooを表示させてみてください。セレクターを指定して要素にアクセスするここからが本番です。このブログのTOPページの記事一覧でキーボードのF12を押してみましょう。するとデベロッパーツールが表示されますね。デベロッパーツールが表示された状態で「環境構築不要で配布!ruby+seleniumのコードをexe化【chromedriver】」というところを右クリックしてみましょう。メニューの一番下に「検証」とあるので、ここをクリックしてください。右クリックした要素がハイライトされましたね。この要素を取得してみます。ハイライトされた箇所の上を見ると「id=”post-224′′」というコードがあります。このようなものを「セレクター」と呼び、セレクターを利用して要素を取得していきます。要素を取得してみましょう。先程のselenium.rbを以下に書き換えてください。続きを読む>>と表示されたら成功です。これは先ほどの要素をtextで表示するという命令です。このようにセレクターを使って要素にアクセスし、その要素に命令をすることができます。セレクターには以下のような種類があります。・id・name・class・css・xpath・tag_name・link_text・partial_link_text先程はidを使いましたが、ソースを見るとclass=の中にもpost-224がありますね。‘post-224’).textに変えて実行しても同様の結果が表示されます。classに関しては注意が必要で、HTMLではclassには同一のものを使用します。post-224のclassは一つですが、その右にある「post」はいくつのもclassで使われています。idやnameについては原則1ページに1つしか使わないということがルール化されています(たまに複数使ってるところあるけど)。いった理由からセレクターにはできる限りidかnameを使うと良いでしょう。その次にclassでそれ以降にcss、xpathといった感じです。取得スピードも違うそうです。試しに以下に書き換えて実行してみてください。「find_element」が「find_elements」になっているところに注意です。3コマンドラインに10と表示されたら成功です。‘post’がこのページで10個使われているということです。ように複数系にすることによって要素が配列で返ってきます。countすることで数を返しています。‘post’)[2]のように添字をつけることでそれぞれを呼び出すことができます。続きを読む>>をコマンドラインに表示させてください。要素の継承では要素の中から更に細かい要素にアクセスしてみましょう。ブログTOPのソースを見てみます。配下に<h2>というタグがありますね。これは記事のタイトル部分を表しています。今回はtag_nameというセレクターを使用してみます。3環境構築不要で配布!ruby+seleniumのコードをexe化【chromedriver】がコマンドラインに表示されたら成功です。このように要素を継承して更に細かい要素にアクセスすることが可能です。続きを読む>>を出力してください。属性へのアクセスブログTOPの先程のソースを見てみると以下のようなコードがあります。href=”http://katsulog.tech/ruby_selenium_chrome_exe/”>環境構築不要で配布!ruby+seleniumのコードをexe化【chromedriver】</a>aタグの中にhrefという属性があって、その中に記事のURLが入っています。このURLを取得してみましょう。