Ruby/Mechanize?
Dokumentation und Projekt-Homepage
Downloads
Nokigiri HTML und XML Parser
Perl-Mechanize
Python-Mechanize
Ein simples Beispiel
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
agent.get('http://bing.de')
agent.page.forms.first.q = 'heise news'
agent.page.forms.first.submit
links = agent.page.search('div[@id="results"]/ul/li/div/h3/a')
links.each{|link| puts "#{link.text} (#{link['href']})"}
Kurzübersicht
Beim Kasten "Mechanize im Überblick" auf Seite 130 der c't 4/2010 hat sich leider ein kleine Fehler eingeschlichen. Um einen Link über seinen Text zu selektieren, muss immer das :text-Attribut angegebn werden, also:
agent.page.link_with(:text => 'klick mich').click
Hier eine Kurzübersicht über die Mechanize-Funktionen. Ein umfangreicherer Übersicht mit den wichtigsten Funktionen finden Sie weiter unten im Ruby/Mechanize? Cheat Sheet.
| Formular | nach Name | agent.page.form_with('form_name') |
| nach Action | agent.page.form_with(:action => '/search') | |
| als Array | agent.page.forms[3] oder agent.page.forms.last | |
| Link | nach Text | agent.page.link_with(:text => 'Klick mich') |
| RegExp | agent.page.link_with(:href => /product\/.*\/info.html/) | |
| Eingabefelder | alle | form.fields |
| nach Name | form.field_with('feld_name') | |
| Wert setzen | form.feld_name = 'irgendwas' | |
| Radio Buttons | Setzen | form.radiobuttons[2].check |
| form.radiobuttons_with('name')[2].check | ||
| Checkboxen | (Zurück)Setzen | form.checkboxes[2].check (.uncheck) |
| nach Name | form.checkboxes_with('name')[2].check | |
| Optionsfelder | Auswahl | form.field_with('name').options[0].select |
| keine / alle | form.field_with(‚name’).select_none (.select_all) | |
| Wert direkt | form.name = 'wert' | |
| Navigation | Zurück | agent.back |
| Link folgen | agent.page.link_with(:text => 'Klick mich').click | |
| Formular senden | Submit | form.submit |
| Button-Klick | form.click_button() | |
| form.click_button(form.button_with('name')) | ||
| Datenextraktion | XPath | agent.page.search('/table/tr') |
| CSS | agent.page.search('.data_table .data_row') | |
| HTML-Code | agent.page.body | |
| Text-Element | agent.page.search('/div[@id="result"]/')[0].text |
Ruby/Mechanize? Cheat Sheet
Das Ruby/Mechanize? Cheat Sheet fasst einige wichtige Funktionen auf einer A4-Seite zusammen.

Ruby Mechanize Cheat Sheet von Tobias Grimm steht unter einer Creative Commons Namensnennung 3.0 Unported Lizenz.
Attachments
-
ruby-mechanize-cheat-sheet.pdf
(42.9 KB) - added by tobi
2 years ago.
Ruby Mechanize Cheat Sheet (PDF) 2010-01-30
-
ruby-mechanize-cheat-sheet.svg
(79.9 KB) - added by tobi
2 years ago.
Ruby Mechanize Cheat Sheet (SVG) 2010-01-30