読者です 読者をやめる 読者になる 読者になる

ruby

RubyInstallerは2.3で止まってる。2.4以降はRubyInstaller2が使えるよ

ここからどうぞhttps://github.com/larskanis/rubyinstaller2/releases ネタ元 http://qiita.com/jnchito/items/08b5be458134073c60e3

Mechanizeで uninitialized constant WWW (NameError) と出たけど対応した

agent = WWW::Mechanize.newを agent = Mechanize.newにしたら治った。

tableのtdタグだけ抽出

require 'hpricot' doc = Hpricot( open('http://url').read ) #mc_listという名前のtableのtdタグだけ抽出 table = (doc/"table.mc_list td") table.each{|tag| #htmlタグを出力 puts.inner_html #テキストを出力 puts.inner_text }ネタ元 http://route477.…

rubyのswitch文はcaseという

case $age when 0 .. 2 "baby" when 3 .. 6 "little child" when 7 .. 12 "child" when 13 .. 18 "youth" else "adult" endネタ元 http://www.ruby-lang.org/ja/man/html/_C0A9B8E6B9BDC2A4.html#case

構造体はStructでnewして作る

dog = Struct.new("Dog", :name, :age) fred = dog.new("fred", 5) fred.age=6 printf "name:%s age:%d", fred.name, fred.ageネタ元 http://www.ruby-lang.org/ja/man/html/Struct.html

Mechanizeでリンク先URLの一覧を取得する

例えば”編集”というテキストになっているリンク先URLをurl_listという配列にまとめるならこんな感じ page = agent.get('<URL>') page.links.each{|url| if( url.text == "編集".toutf8 ) #puts url.href url_list.push(url.href) end }ネタ元 http://route477.net</url>…

数字を文字列に変換するには.to_s

num = 10 puts num.to_s + '番目'

formの入力フィールド名一欄表示方法

form = page.forms.first # => Mechanize::Form form.fields.each { |f| puts f.name }ネタ元 http://mechanize.rubyforge.org/mechanize/Mechanize/Form.html

例外を捕捉する

例外が起きても処理を続けたいときなどに。 begin # 実行する処理 rescue # 例外が発生したときの処理 else # 例外が発生しなかったときに実行される処理 ensure # 例外の発生有無に関わらず最後に必ず実行する処理 endネタ元 http://www.namaraii.com/rubyt…

Mechanizeでフォームの1項目しか選択できない選択メニュー、またはドロップダウンリストの選択方法

ラジオボタンやチェックボックスとは違い、選択リストは Mechanize においては若干複雑。 例えばこういうフォーム <form name="selectform"> <select name="memu2"> <option value="1" selected>選択1</option> <option value="2">選択2</option> <option value="3">選択3</option> </select> </form>選択2を選択状態にするには form.field_with(:name => 'menu2'){|list| list.option_with(:t…

Mechanizeでフォームのドロップダウンリストの選択肢の一覧(リスト)を取得

例えばこういうフォーム <form name="selectform"> <select name="memu2"> <option value="1" selected>選択1</option> <option value="2">選択2</option> <option value="3">選択3</option> </select> </form>Mechanize::Form::Option オブジェクトにして配列で返します。 option_list = form.field_with(:name => 'memu2').options option_list.each{|option…

複数の返り値の返し方

def multiarg(x, y, z) return x * 2, y * 2, z * 2 end a, b, c = multiarg(2, 5, 8) print "#{a}, #{b}, #{c}\n" # 配列も多重代入できる ary = [10, 20, 30] a, b, c = ary print "#{a}, #{b}, #{c}"ネタ元 http://www.mapee.jp/ruby/post_51.html

Mechanizeリダイレクトの設定

follow_meta_refresh というメタタグ用のON/OFF設定とredirect_okというLocation ヘッダ用のON/OFF設定がある。それぞれtrueをいれないとリダイレクトしない。ネタ元 http://d.hatena.ne.jp/kitamomonga/20080330/ruby_www_mechanize#mechanize__redirect_ok…

配列のループ、繰り返し

puts "---配列要素を1つずつ操作" a.each{|i| print i, ", " } p aネタ元 http://www.mapee.jp/ruby/post_28.html

日時の情報取得

時刻を扱うためにはTimeクラスがあります。 day = Time.now p day #=> "Sun May 20 23:48:45 JST 2001" p day.year #=> 2001 p day.month #=> 5 p day.day #=> 20 p day.hour #=> 23 p day.min #=> 48 p day.sec #=> 45 p day.wday #=> 0ネタ元 http://www.n…

Snow LeopardにしたらRubyが動かなくなった

なんかいろいろエラーがでた。 やっぱりOSのインストールにはトラブルがつきものだなぁ。いままでいれたモジュールを再度インストール試みたら治った。 sudo gem update --system sudo gem install zipruby sudo gem install mechanize sudo gem install nok…

readlines()でタブ区切りで読み込む

クラス作る class TAB < CSV def TAB.readlines(path, rs = nil) reader = open_reader(path, 'r', ' ', rs) begin reader.collect { |row| row } ensure reader.close end end end使い方 myArray = TAB.readlines("test.csv")ネタ元 http://d.hatena.ne.jp/…

Arrayとcsvの相互変換

require 'csv' ・・・ #Arrayをcsvに変換するのが csv = CSV.generate_line(Array) #csvをArrayに変換するのが Array = CSV.parse_line(csv)オプションの一つ目がColumn separatorデフォルトで "," オプションの二つ目がRow separatorデフォルトで "\r\n or …

¥nと\nは別物

macでutf-8でコード書いたからかな? ハマった

文字列から正規表現で文字列を切り出す

マッチした文字列を全て抜き出して配列へ格納するscan()を使うといい。 text = '123a456b123c789d' m = text.scan(/123./)結果 p m[0] # -> "123a" p m[1] # -> "123b" ネタ元 http://namaraii.com/rubytips/?%A5%D1%A5%BF%A1%BC%A5%F3%A5%DE%A5%C3%A5%C1

CSVを読み込む

a に2次元配列のような形で入ってくる require 'csv' ・・・・ a = CSV.readlines('hoge/foo.csv')ネタ元 http://oz-log.blogspot.com/2009/10/ruby.html CSV 形式のパースが失敗したらCSV::IllegalFormatErrorとでます。 原因は クオート対応不正 改行コー…

mechanize リンクの抽出

page.links.each do |link| puts link.text endネタ元 http://voidptr.seesaa.net/article/89963393.html の「リンクを見つける」

正規表現で文字列抽出

abcdとefgに囲まれた文字列が欲しいとする。 text = 'abcd123efg' re = Regexp.new('(abcd(.*)efg)') m = re.match(text) puts m[0] # -> abcd123efg puts m[1] # -> abcd123efg puts m[2] # -> 123 これが欲しいやつ括弧がキモネタ元 http://www.geocities.…

ファイル名/フォルダ名の抽出など

puts '--- ファイル名を取り出す。一番後ろの"/"以降を返す。' p File.basename("/home/user/bin/ruby") p File.basename("/home/user/bin/ruby/file.rb") p File.basename("/home/user/bin/ruby/file.rb", ".rb") # 第2引数で取り除く部分指定 puts '--- デ…

WWW::Mechanizeがメモリを食いまくるので履歴は1にしとくべし

ページ取得スクリプトを組んで走らせてると なんかPC重いなと思ったらRubyで2GByteメモリ食ってた。WWW::Mechanizeはデフォルトでページの履歴を貯めまくるそうなので agent.max_history = 1とすると履歴は1つしか持たなくなるのでメモリに優しい。ネタ元 …

mechanize formの指定方法色々

page = agent.get('<url>'); form = page.forms.with.name('名前').first form = page.forms.first form = page.forms[2]</url>

mechanize チェックボックス/ラジオボタンのチェック方法

チェックボックス例 form.checkboxes.name('box').checkラジオボタン例 form.radiobuttons.name('box')[1].checkネタ元 Ruby: Mechanize GUIDE.txt 日本語訳

○○基礎文法最速マスター

最近流行ってるのか、いろいろでてます。 ありがたい。あまりに多くなってきたので。必要なのだけにまとめた。 PHP基礎文法最速マスター Ruby基礎文法最速マスター JavaScript基礎文法最速マスター VBA基礎文法最速マスター VBScript 基礎文法最速マスター P…

Ruby基礎文法最速マスター

ちょいと基本をど忘れしたとき便利http://route477.net/d/?date=20100125

RubyでOSがWindowsであることを判定する

if ( RUBY_PLATFORM.downcase =~ /mswin(?!ce)|mingw|cygwin|bccwin/ ) p 'Win' endネタ元 http://pools.jp/2008/03/15/ruby-os-windows-%E5%88%A4%E5%AE%9A/

VC++6からRubyを実行

SVNとかに登録することも考えて、必要なファイルをプロジェクトファイル内にコピーして使う。 C:\Ruby\lib\msvcrt-ruby18-static.lib C:\Ruby\lib\ruby\1.8\i386-mswin32\win32フォルダ C:\Ruby\lib\ruby\1.8\i386-mswin32\*.h プロジェクトの設定>リンクで…

文字の検索

文字列中に含まれている任意文字列の位置を求める無かったらnilが返る s = "Apple Banana Apple Orange" p s.index("Apple") #=> 0 p s.index("Banana") #=> 6 p s.index("Apple", 6) #=> 13 p s.rindex("Apple") #=> 13 p s.rindex("Apple", 6) #>= 0ネタ元…

Zipの解凍

ziprubyというライブラリがいるのでインストール gem install ziprubyコードはこんな感じ require 'rubygems' require 'zipruby' Zip::Archive.open('test.zip') do |ar| ar.fopen(ar.get_name(0)) do | file | fileName = file.name content = file.read en…

ファイル出力

foo = File.open("foo.txt",'w') foo.puts 'bar' foo.closeネタ元 http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9#l9

CSVファイルを読み込む

一行ずつ読み込むサンプル require 'csv' ・・・ CSV.open('test.csv', 'r') do |row| p row[0] # 0番目の要素表示 endネタ元 http://d.hatena.ne.jp/gom68/20090213/1234523232

ファイル選択ダイアログ

require 'win32ole' require 'vr/vruby' ・・・ file=SWin::CommonDialog::openFilename(nil,[["CSV(*.csv)","*.csv"],["all(*.*)","*.*"]],0x1000) wsh = WIN32OLE.new('WScript.Shell') if file wsh.Popup(file,0, "選択されたファイルは") else wsh.Popup…

ハッシュ Hash

解説 http://www.rubylife.jp/ini/hash/index3.html 数値以外でもキーにできる配列なイメージ test_hash = Hash.new test_hash[0] = 1234 test_hash['abc'] = 5678

mechanize-0.9.3 Documentation

リファレンスhttp://mechanize.rubyforge.org/mechanize/こっちも読んでおいた方がいい Mechanize GUIDE.txt 日本語訳

日本語オプションの指定は$KCODEよりも-Kオプションで

スクリプトの一番上に #!/usr/local/bin/ruby -Ksと入れるとよいネタ元 http://d.hatena.ne.jp/rubyco/20060318/charcount

デバッガの使い方

こちら http://www.ruby-lang.org/ja/man/html/debug.html

HTML解析のライブラリHpricot

こんな感じで使える require 'hpricot' require 'open-uri' url = 'http://yahoo.co.jp/' # HTML解析 doc = Hpricot( open(url.chomp).read ) # ページタイトル抽出 title = (doc/:html/:head/:title).text.tosjis puts title #imgタグの中で.jpgの者だけ抽…

コマンドラインでの入力は gets

こんな感じ。 puts 'URLを入力して下さい。' url = gets

漢字を含んだスクリプトが文字化けを出力したり、正しく実行できない場合があります

ruby 1.6以降、デフォルトで漢字コードを特別に解釈しなくなったそうです。Win環境では ruby -Ks <スクリプトファイル>とすればよろしいそうです。元ネタ http://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html

mechanizeでweb上のファイルをローカル保存

右クリックで保存みたいな。 require 'rubygems' require 'mechanize' require 'kconv' agent = WWW::Mechanize.new file = agent.get('http://www.yahoo.co.jp/') file.save # file.save_as("yahoo.html") とかもありネタ元 http://clip.nifty.com/entry/c6…

ftpでアップロード

require 'net/ftp' #ftpでアップロード ftp = Net::FTP.new ftp.debug_mode = true #デバッグモード。アクセスの詳細が分かるよ ftp.connect( 'ftpサーバアドレス' ) ftp.login( 'ユーザー', 'パスワード' ) ftp.passive = true #passive(PASV)モードが必要…

プロシージャ エントリ ポイント rb_thread_status が ダイナミック リンク ライブラリ xxxx.exe から見つかりませんでした。

One Click Ruby InstallerでRuby環境をインストールするとこれが出る場合があるみたい。 ActiveScriptRubyを使うと治るそう。http://arton.hp.infoseek.co.jp/indexj.htmlからActiveRuby.msiをダウンロード&実行。インストール先をC:\Rubyにして上書きイン…

Rubyをexe化するExerbで作ったexeがDLLがないとぼやくときの対処方法

nokogiriを使っている場合、以下のdllが存在しないということでエラーとなった。 libxml2.dll libxslt.dll libexslt.dll そこで、レシピファイルを開いて、pathセクションに上記ファイルが存在するパスを追加(環境に合わせて書き換えてね) path: - c:/ruby/l…

Windowsでスクリプト言語“Ruby”を導入するための和製インストーラー「Rumix」

日本語で安心の一発インストーラ。http://www.forest.impress.co.jp/docs/review/20100106_340742.html

Mechanizeでユーザエージェント指定&リダイレクト指定

こんな感じ。 require 'mechanize' ・・・ agent = WWW::Mechanize.new agent.user_agent_alias = 'Windows IE 7' agent.redirect_ok='true' agent.redirection_limit=3アイリアスは以下のものが用意されています。 Windows IE 6 Windows IE 7 Windows Mozil…

RubyのSBI証券Fxクライアントライブラリ

改造すればいろいろ使えそう。http://github.com/unageanu/sbiclientネタ元 http://d.hatena.ne.jp/unageanu/20090907