为什么你需要机械化的全名:
#!/usr/bin/ruby -w
require 'rubygems'
require 'pp'
require 'yaml'
require "mechanize"
yml = YAML.load_file 'login.yml'
user = yml["user"]
pword = yml["pword"]
a = WWW::Mechanize.new { |agent|
agent.user_agent_alias = 'Mac Safari'
}
a.get('http://google.com/') do |page|
search_result = page.form_with(:name => 'f') do |search|
search.q = 'Hello world'
end.submit
search_result.links.each do |link|
puts link.text
end
end
当机械化example没有做到这一点?这是在previous问题的基础上提出的。代码仅在阅读有关此确切主题的上一个问题并添加完整的类(?)名称后才起作用。我在Java中看起来有些相似,但只有在它含糊不清的时候。在这里,没有任何暧昧,只有一个机械化。
请原谅,实际上一个问题完全与上述环节相矛盾。我之前提到的问题是here。重申一下,两个不同的问题,两个不同的答案。也许API或习语发生了变化。答案 0 :(得分:1)
您使用的是什么版本的Mechanize?试试gem list mechanize
。
使用Ruby 1.8.7-p357,1.9.2-p290和1.9.3-p0以及Mechanize 2.1我能够实例化一个实例。例如:
1.8.7 :001 > require 'mechanize'
true
1.8.7 :002 > agent = Mechanize.new
#<Mechanize:0x101baacf0
[...]
和
1.9.3p0 :001 > require 'mechanize'
true
1.9.3p0 :002 > agent = Mechanize.new
#<Mechanize:0x102988610
[...]
我怀疑您使用的是Mac OS,因为您正在/usr/bin
访问Ruby。默认情况下,在Windows或Linux上没有安装Ruby,并且通常不会在那条路径上安装。
Apple的Ruby版本不包含Mechanize,因此您在某些时候添加了它。因为Apple没有安装它,所以更新应该是良性的,所以:
sudo gem update mechanize
Apple确实在Mac OS上使用Ruby作为应用程序,因此在更新预安装的宝石时必须注意这一点。