0

私はRoRを使用して、mechanizeを使用して大学で簡単なフォームを検索しようとしています。コードはグーグルを検索するためにうまく機能しますが、結果に検索フォームを返しますか?私は本当に混乱しています。何かアドバイス?ありがとう!

ruby script/console
require 'mechanize'
agent = WWW::Mechanize.new
agent.get("https://www.owens.edu/cgi-bin/class.pl/")
agent.page.forms
form = agent.page.forms.last
form.occ_subject = "chm"
form.submit
4

1 に答える 1

0

解決しました!がform.submit呼び出されると、最後のボタンが使用するボタンであると想定さform.buttonsれます。の最後のボタンform.buttonsは高度なフォーム用であるため、より包括的な高度な検索フォームではありますが、結果のページ オブジェクトは別のフォームになります。

require 'mechanize'
agent = WWW::Mechanize.new
agent.get("https://www.owens.edu/cgi-bin/class.pl/")
agent.page.forms
form = agent.page.forms.last
form.occ_subject = "chm"
result = agent.submit(form, form.buttons.first)

result.parser.css('table.cs-table-settings tr.tbl-class-fill-b td font b').map { |v| v.text.strip }

=> ["Principles of Chemistry", "Principles of Chemistry", "Principles of Chemistry", "Principles of Chemistry", …]

ついにその真相に迫ります!HTML はひどいので、これには XPath の帽子をかぶる必要があります。:)

于 2009-12-08T22:30:39.603 に答える