python+seleniumでTwitterにログインしてみる

タイトルの通り、python+seleniumでTwitterにログインしてツイートしてみました。

 

環境
  • Mac Book Air(mid2013) OS X
  • Python 3.4.3
  • selenium 2.46.0
  • Firefox 37.0.2
環境構築

python 3.4.3はすでにpyenvを用いてインストールしてあります。詳しくは、以前の記事[Macでpyenvを用いたPython環境構築]を参考にしてみてください。

seleniumのインストール

最初は、pyenvでインストールしたanaconda-2.1.0で作業を行おうと思ったのですが、pipを用いてseleniumをインストールしようとした際にエラーを吐いたので、あまり詳しく調べずに3.4.3を用いることにしました。


pip install selenium

こちらは、3.4.3に変更すると問題なくインストールし、動作させることができました。

firefoxについては、特に何もせずにpythonから操作をすることができました。

 

プログラム
# coding: utf-8
# Twitter Webにログインしてツイートしてみる
# seleniumの練習
from selenium import webdriver

def post_twitter( user_name, password):
	browser = webdriver.Firefox()
	browser.get("https://twitter.com/")

	# ログイン処理
	mail = browser.find_element_by_id('signin-email')
	pass_wd = browser.find_element_by_id('signin-password')
	mail.send_keys(user_name)
	pass_wd.send_keys(password)
	pass_wd.submit()

	# ツイートの処理
	from datetime import datetime
	post_body = browser.find_element_by_id("tweet-box-home-timeline")
	post_body.send_keys("Python test: "+datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
	try:
		post_button = browser.find_element_by_css_selector("button.tweet-action")
		post_button.click()
		print("ツイート成功")
		# この時点で、他の操作をするとなんだか失敗するみたい。
	except:
		print("ツイート失敗")

	browser.close()

if __name__ == "__main__":
	from getpass import getpass
	name = input("user name : ")
	pw = getpass("password  : ")
	post_twitter( name, pw)

プログラムを実行後にユーザ名とパスワードを入力します。この際に、パスワードは表示されませんが、入力できています。よく、コマンドライン上でパスワードを打つ際に使うやつですね〜
(実際にプログラムを書いているときはユーザ名とパスワードを直打ちしてありましたw)

うまくいけば、ユーザ名、パスワードを入力後にそのまま放置していると、しばらくしてFirefoxが立ち上がります。そのまま何もせずにブラウザを見守っていると、Twitterのログイン画面が表示され、先ほど入力したユーザ名とパスワードが勝手に入力されログイン。その後、ツイートボックスに”Python test: (時刻)”と次々に入力され、最終的にツイートボタンが押されブラウザが閉じます。

時刻をツイートするようにしたのは、何度もテストを繰り返すために同じ文章がツイートできないとテストしにくいからです。時刻の取得の説明は…親切な他のサイトをみてください。

 

注意点
  • この流れの際に、他の操作をするとどうやらツイートする画面で処理が失敗するようです。なぜでしょうか…。
  • きちんとbrowser.close()を実行しないと、正常に終了していない謎のブラウザが溜まっていきます。きをつけてください。
    スクリーンショット 2015-07-01 0.03.34

 

まとめ

「seleniumなるものを使えば、やりたいことが実装できそう。」という知識の状態から調べ始め、プログラムが1時間ほどで完成しました。これは別に「自分が優秀」とか言ってるわけじゃなく、Pythonやそのライブラリがむっちゃ優秀だからできたことです。

手間取ったところといえば、seleniumのインストールとセレクター(html要素の指定)をどれを使うのが良いかまよったぐらいです。

言い訳ですが、短時間でパパッと作ったプログラムなのでエラー処理とか、ガバガバだったり書き方が汚かったりしますけど、許してください^^

 

以上、python+seleniumを用いたブラウザ操作の練習でした。

 

One thought on “python+seleniumでTwitterにログインしてみる

  1. Pingback: TuT休講情報をより見やすく便利に! | たくのこ Web

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください