動かざることバグの如し

近づきたいよ 君の理想に

RubyのMechanizeでフォーム送信する

環境

  • Mechanize 2.7

やりたいこと

Mechanizeでスクレイピングするときに、フォーム送信したい

ログイン処理とかもこれに含まれる

agent = MyMechanize.new
agent.get "https://example.com/login"
form = agent.page.form(id: "login")
form.field_with(name: "email").value = "hoge@example.com"
form.field_with(name: "password").value = "hogehoge"
form.submit

もし存在しないフィールドを追加したい場合は

form.add_field!("hogehoge", value = "1234")

とすることで、あたかも

<input type="text" name="name" value="1234">

があるかのように実行してくれる。