也许我做错了,或者有另一种更有效的方法。我的问题是:
我首先,使用nokogiri打开一个html文档,并使用它的css遍历文档,直到我找到我需要点击的链接。
现在,一旦我有了链接,我如何使用机械化点击它?根据文档,Mechanize返回的对象。新建字符串或Mechanize::Page::Link对象。
我不能使用字符串-因为可能有100个相同的链接-我只想机械化点击nokogiri所遍历的链接。
任何想法?
找到所需的链接节点后,可以手动创建Mechanize::Page::Link
对象,然后单击它:
agent = Mechanize.new
page = agent.get "http://google.com"
node = page.search ".//p[@class='posted']"
Mechanize::Page::Link.new(node, agent, page).click
比@binarycode选项更简单的方法:
agent = Mechanize.new
page = agent.get "http://google.com"
page.link_with(:class => 'posted').click
这很简单,您不需要使用mechanize link_with().click
你可以只get
链接和更新你的page
变量
Mechanize在内部保存当前的工作站点,因此它足够聪明,可以遵循本地链接
例:
agent = Mechanize.new
page = agent.get "http://somesite.com"
next_page_link = page.search('your exotic selectors here').first rescue nil #nokogyri object
next_page_href = next_page_link['href'] rescue nil # '/local/link/file.html'
page = agent.get(next_page_href) if next_page_href # goes to 'http://somesite.com/local/link/file.html'