gpt4 book ai didi

ruby-on-rails - 困惑 ror Mechanize

转载 作者:行者123 更新时间:2023-12-04 16:22:41 25 4
gpt4 key购买 nike

我正在尝试使用 Mechanize 对我大学的类(class)表 db 执行简单的搜索。以下代码返回 nil,但它可以登录 facebook 并搜索 google(使用 diff url/params)。我究竟做错了什么?

我正在关注最新的(很棒的)railscast here . 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.search
=> []

最佳答案

form.submit.search 中删除搜索即 form.submit我猜您正在附加搜索以提交认为它与提交按钮的值有关,即搜索。

您正在执行的代码是成功提交表单。但是,您正在使用 nil 参数调用结果页面对象的搜索方法。搜索方法需要一个选择器,例如'body div#nav_bar ul.links li'作为它返回与该选择器匹配的元素数组的参数。当然,没有元素会匹配 nil 选择器,因此是空数组。

根据您的回复编辑:

您的代码:

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.search
=> []

我尝试并开始工作:

ruby 脚本/控制台
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 # <- No search method.
=> Insanely long array of HTML elements

相同的代码也不适用于 Google:
require 'mechanize'
require 'nokogiri'
agent = WWW::Mechanize.new
agent.get("http://www.google.com")
form = agent.page.forms.last
form.q = "stackoverflow"
a = form.submit.search
b = form.submit
puts a
=> [] # <--- EMPTY!

puts b
#<WWW::Mechanize::Page
{url
#<URI::HTTP:0x1020ea878 URL:http://www.google.co.uk/search?hl=en&source=hp&ie=ISO-8859-1&q=stackoverflow&meta=>}
{meta}
{title "stackoverflow - Google Search"}
{iframes}
{frames}
{links
#<WWW::Mechanize::Page::Link
"Images"
"http://images.google.co.uk/images?hl=en&source=hp&q=stackoverflow&um=1&ie=UTF-8&sa=N&tab=wi">
#<WWW::Mechanize::Page::Link
"Videos"


页面对象的搜索方法的行为类似于 Nokogiri 的搜索方法,因为它接受一系列 CSS 选择器和/或 XPath 查询,并返回匹配元素的可枚举对象。例如
page.search('h3.r a.l', '//h3/a[@class="l"]') 

关于ruby-on-rails - 困惑 ror Mechanize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com