【初心者のpython入門】seleniumでログイン自動化!〜Twitter編〜





現在、TwitterのAPIを利用して様々なツールが活躍していますが、プログラミング初心者の人からすれば、「TwitterAPIの利用方法がいまいち分からないし、API取得も厳しくなって面倒。。。」そう感じる人もいるかもしれません。

そこで、今回の記事ではpythonのseleniumモジュールを利用して、APIなしで自動化を図れないか実践していきます。

また、ログインだけでなく、今後はフォローやいいね!も自動化が行えるか実践していきます。

本記事では、seleniumの解説、ログイン自動化までの内容を記載します。

 

 
 
また、pythonをこれから本格的に学習する人は、目的を持って学習する必要があります。
 
 
こちらでは、3ヶ月間を利用して基礎学習から稼ぐまでの学習ロードマップをまとめてみましたので、本記事と合わせて一読して頂けたら幸いです。
 
 

プログラミング学習の始め方〜3ヶ月で稼ぐには〜

2019.11.15
 
 
更に実践的な稼ぎ方についてはこちらの記事をご参照ください。
 
 

プログラミング言語Pythonを活用して稼いでみた〜ココナラ編〜

2019.11.04
 
 

汎用性の広いPythonを0から習得するためのフロー及び実際にPythonで開発を行い開発案件を獲得するまでの筋道について解説しているチュートリアル資料と

コーディングの参考となる実際にPythonを使って作ったツールのソースコードを無料で配布していますので、こちらも併せてご覧ください。

初心者・入門者でも30日間で学習できるおすすめPython学習方法

 

おすすめのPython学習サービスをまとめてみました。挫折することなく一直線にエンジニアを短期集中で目指している人はこちらから確認してください。 

【おすすめ】Python学習サイトPyQが初心者に選ばれる理由

プログラミングを学ぶ上で作りたいものがない人へ提案させてください

 

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が習得できます

【おすすめ】Python学習サイトPyQが初心者に選ばれる理由

2020.03.07

 

最後に

実行していただいた人は、どのようにseleniumにてブラウザ上の操作が自動化されているか確認できたかと思います。

このプログラムを応用して、FacebookやInstagramなどにも利用できそうです。

また、次回はこのプログラムを利用しTwitter上にて、検索キーワードを用いてアカウントを検索し、seleniumでフォローを行なっていきたいと思います。

pythonを利用することで非常に簡単なログイン自動化のプログラムを作成することができました。

最後まで一読していただき、ありがとうございました。



ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。