作成日
2013/08/03最終更新
2018/09/07記事区分
一般公開Seleniumを用いて、OAuthを用いずにTwitterに自動投稿するRubyスクリプトを記述してみます。連続で複数回実行すると、ボット判定としてキャプチャ認証が発生します。その認証までは通過できませんので悪しからず。また、Twitterの仕様変更次第ではDOMの構造が変化するため、下記サンプルは機能しなくなる恐れが有ります。
twitter_post.rb
#!/usr/bin/ruby
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.manage.timeouts.implicit_wait = 10 # seconds
# トップページを表示
driver.get "https://twitter.com/"
# ログイン処理
input_email = driver.find_element :id => "signin-email"
input_email.clear
input_email.send_keys "warren757"
input_password = driver.find_element :id => "signin-password"
input_password.clear
input_password.send_keys "warren757's password"
input_password.submit
# つぶやき内容をフォームに入力
driver.find_element(:id => "tweet-box-mini-home-profile").send_keys "Posted from a ruby script using Selenium."
# サブミット
driver.find_elements(:class, "tweet-action").each do |tweet_btn|
tweet_btn.click if tweet_btn.attribute("class").split(' ').select{|cname| cname=='disabled'}.size == 0
end
# スクリーンショット生成
sleep 5
driver.save_screenshot "/tmp/twitter_post.png"
関連記事
- レイアウトおよび部分テンプレートに関するまとめ (Rails4)レイアウトおよび部分テンプレートはどちらもテンプレート (*.html.erb) に共通の要素をまとめておき、任意のテンプレートから利用できるようにしておくための仕組みです。フッターやヘッダーといった大枠はレイアウト、小さなパーツは部分テンプレートというイメージで使い分けましょう。 レイアウトの使用方法 クラス毎に指定する方法と、アクション毎に指定する方法があります。 app/views/layo...
- Ruby コードスニペット (正規表現)sample.rb str = "001: This is a string." var1,var2 = 2,3 # 'EOS'とすると#{}による変数展開がなされない (%03dは展開される) doc = (<<"EOS" % var1) # 括弧は省略可。要は<<"EOS"の次の行からEOSまで。(参: <<-"EOS"とすると前に空白...
- Ruby における日本語のエンコーディング日本語を含めて多言語対応する際には、Asciiコード以外の文字コードセットが必要になります。日本語が主となる場合、よく使われる文字セットにはUnicode, Shift_JIS, EUC-JPがあります。このうち Unicode だけは特殊であり、世界中のあらゆる文字を収録しようとしていることから 1 文字を表現するために必要なバイト数が大きくなってしまっています。そのため Unicode のうち...
- Rails3ビューテンプレートの基本的な使用方法 (Ruby)Railsでは、ERB (eRuby (テキストファイルにRubyスクリプトを埋込む書式の仕様) をRubyで実装したもの) を用いてHTML内にRubyスクリプトを埋込むことができます。 <% %> で囲むと出力されません (if-elseなど制御構文を記述します) <%= %> で囲むとエスケープ出力されます <%== %> で囲むとエスケープされずに...
- ビューヘルパーの作成方法 (Rails4)事前準備 $ rails generate scaffold myModel field1:string field2:integer field3:date field4:boolean $ rake db:migrate config/application.rb module MyApp class Application < Rails::Application ... ...