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/