我首先使用nokogiri打开一个html文档并使用它的css遍历文档,直到找到我需要点击的链接。
现在,一旦我有链接,我如何使用mechanize点击它?根据文档,Mechanize.new返回的对象是字符串或Mechanize :: Page :: Link对象。
我不能使用字符串 - 因为可能有100个相同的链接 - 我只想要机械化点击nokogiri遍历的链接。
有什么想法吗?
答案 0 :(得分:14)
找到所需的链接节点后,您可以手动创建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
答案 1 :(得分:5)
比@binarycode选项更简单:
agent = Mechanize.new
page = agent.get "http://google.com"
page.link_with(:class => 'posted').click
答案 2 :(得分:2)
这很简单,您不需要使用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'