Ruby Mechanize:以编程方式单击链接而不知道链接的名称

时间:2014-12-25 00:35:02

标签: ruby mechanize

我正在编写一个ruby脚本来搜索网页。这是代码:

require 'mechanize'

mechanize = Mechanize.new
page = mechanize.get('http://www.example.com/)
example_page = page.link_with(:text => 'example').click
puts example_page.body

上面的代码工作正常。文本'example'((:text =>'example')必须是页面上的链接才能使代码正常工作。但问题是,当我进行网络搜索时(bing,yahoo,google) ,等等,数百个链接出现。如何在不知道链接的确切名称的情况下以编程方式单击链接?如果链接的名称部分(或完全)与文本匹配,我希望能够单击链接我指定或点击链接,如果它有一个特定网址。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

Mechanize有正则表达式:

page.link_with(text: /foo/).click
page.link_with(href: /foo/).click

以下是通常适用于链接和表单的Mechanize标准:

name: name_matcher
id: id_matcher
class: class_matcher
search: search_expression
xpath: xpath_expression
css: css_expression
action: action_matcher
...

如果您有点好奇,请点击Mechanize ElementMatcher code