現在、TwitterのAPIを利用して様々なツールが活躍していますが、プログラミング初心者の人からすれば、「TwitterAPIの利用方法がいまいち分からないし、API取得も厳しくなって面倒。。。」そう感じる人もいるかもしれません。
そこで、今回の記事ではpythonのseleniumモジュールを利用して、APIなしで自動化を図れないか実践していきます。
また、ログインだけでなく、今後はフォローやいいね!も自動化が行えるか実践していきます。
本記事では、seleniumの解説、ログイン自動化までの内容を記載します。
目次
seleniumとは?
みなさんがよく利用するウェブブラウザがあると思います。
多くの人はGoogle Chromeを扱っていると思いますが、そのブラウザにおいて通常は、人の手で操作していると思います。
seleniumとは、そのブラウザ上の操作をプログラムによって自動的に操作するためのものになります。
seleniumを利用したブラウザ操作は、Web上のシステムの自動テストやスクレイピング等に利用されます。
また、ブラウザ上でのクリックなども行えることから、応用範囲は幅広く、利用価値は高いです。
今回は、そんなseleniumを利用した自動操作を試していきますが、簡単なテストとして少しでも利用しそうなものを題材にしようと思い、Twitterのログインを例にしていきます。
seleniumに必要な動作環境
ここでは、python・seleniumモジュール・webdriverの三つから動作するプログラムを構成していきます。
また、本プログラムの動作環境としてMac環境を利用しますが、Windows環境でも同様に実施できるかと思います。
pythonのインストール
pythonの公式サイトからpythonをダウンロードします。
公式サイトにて、Mac・Windows版があるので、お使いのPC環境に合わせてダウンロードとインストールを実行してください。
seleniumのインストール
お使いのPC環境がMacであればターミナル、Windowsであればコマンドプロンプトを起動させてください。
起動後は、以下のコマンドを入力して実行しましょう。
pip install selenium
このコマンドを実行後、successfully installedが出力されれば、インストール完了となります。
webdriverのインストール
ここでは、Google chromeのwebdriverをインストールします。
Google Chrome用のwebdriverのダウンロードサイトからインストーラーを取得しましょう。
また、ダウンロードする際に各OSで利用できるよう分類されているので、お使いのPC環境に沿ってインストーラーを取得しましょう。
インストールしたドライバーの配置は、任意のディレクトリに配置しましょう。
ここでは、分かりやすくデスクトップ上に配置して利用していきます。
seleniumによる本プログラムの解説
ここでは、ブロックに分けてコードの解説をします。
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait import time
上記のコードでは、seleniumのインポート及び利用する各種モジュール(webdriver)を指定しています。
また、timeモジュールも利用します。
ブラウザ上の操作にて、画面表示が確実に行えるよう時間指定を行うためです。
# ユーザー名/メールアドレス username = input("mail-address:") # パスワード password = input("password:")
ここでは、Twitterのアカウントを複数所持している可能性も考慮して、input関数にて指定できるようにしています。
driver = webdriver.Chrome(r"webdriverのディレクトリを指定") driver.get("https://twitter.com/") driver.find_element_by_class_name('StaticLoggedOutHomePage-buttonLogin').click() time.sleep(3) username_box = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[1]/input') password_box = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[2]/input') # ユーザ名とパスワードをインプットする username_box.send_keys(username) password_box.send_keys(password)
ここでは、driver変数にて、利用するwebdriverのパスを指定して起動させます。
指定するURLはもちろんツイッターです。
その後、findメソッドを利用して各要素を取得し、クリックや入力を実行していきます。
この時にクラスネームやxpath等を指定する必要があります。
これらを確かめて指定する必要があります。
その場合、ブラウザ上で操作を行いたい画面にて、デベロッパーツールを起動し、各種必要なクラスネームやxpath等を取得して利用します。
そして、入力したユーザー名及びパスワードを利用してログインします。
# ログインボタンを探す login_button = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button') #ログインボタンをクリック login_button.click()
最後に、ログインボタンをクリックするためのコードを記述して完了です。
以下に一連のプログラムの全体コードを記載しておきます。
# coding: utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait import time # ユーザー名/メールアドレス username = input("mail-address:") # パスワード password = input("password:") driver = webdriver.Chrome(r"webdriverのディレクトリを指定") driver.get("https://twitter.com/") driver.find_element_by_class_name('StaticLoggedOutHomePage-buttonLogin').click() time.sleep(3) username_box = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[1]/input') password_box = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/fieldset/div[2]/input') # ユーザ名とパスワードをインプットする username_box.send_keys(username) password_box.send_keys(password) # ログインボタンを探す login_button = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button') #ログインボタンをクリック login_button.click()
また、今後もプログラミングに取り組み続けていく中で、実務に利用できる学びを身につけていかなければなりません。
・PythonによるWebスクレイピング(オライリー出版)
・増補改訂Pythonによるスクレイピング&機械学習 開発テクニック(クジラ飛行机)
・Pythonクローリング&スクレイピング – データ収集・解析のための実践開発ガイド
Pythonに特化した学習を進めたい人へ
筆者自身は、Pythonista(Python専門エンジニア)としてプログラミング言語Pythonを利用していますが、これには取り組む理由があります。
プログラミングの世界では、IT業界に深く関わる技術的トレンドがあります。
日夜新しい製品・サービスが開発されていく中で、需要のあるプログラミング言語を扱わなければなりません。
トレンドに合わせた学習がプログラミングにおいても重要となるため、使われることのないプログラミング言語を学習しても意味がありません。
こういった点から、トレンド・年収面・需要・将来性などを含め、プログラミング言語Pythonは学習対象としておすすめとなります。
オンラインPython学習サービス – 『PyQ™(パイキュー)』
「PyQ™」は、プログラミング初心者にも優しく、また実務的なプログラミングを段階的に学べることを目指し、開発されたオンラインPython学習サービスです。
Pythonにおける書籍の監修やPythonプロフェッショナルによるサポートもあり、内容は充実しています。
技術書1冊分(3000円相当)の価格で、1ヶ月まるまるプログラミング言語Pythonを学習することができます。
特に、、、
・プログラミングをはじめて学びたい未経験者
・本、動画、他のオンライン学習システムで学習することに挫折したプログラミング初心者
・エンジニアを目指している方(特にPythonエンジニア)
かなり充実したコンテンツと環境構築不要なため、今すぐにでも学び始めたい・学び直したい、Pythonエンジニアを目指したい人におすすめです。
オンラインPython学習サービス「PyQ™(パイキュー)」 ※技術書1冊分の価格から始めて実務レベルのPythonが習得できます |
最後に
実行していただいた人は、どのようにseleniumにてブラウザ上の操作が自動化されているか確認できたかと思います。
このプログラムを応用して、FacebookやInstagramなどにも利用できそうです。
また、次回はこのプログラムを利用しTwitter上にて、検索キーワードを用いてアカウントを検索し、seleniumでフォローを行なっていきたいと思います。
pythonを利用することで非常に簡単なログイン自動化のプログラムを作成することができました。
最後まで一読していただき、ありがとうございました。