在点击nokoogiri和mechanize的链接时遇到了困难



也许我做错了,或者有另一种更有效的方法。我的问题是:

我首先,使用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'

相关内容

  • 没有找到相关文章

最新更新