如何在Ruby中使用mechanize提取这些特定的链接?

时间:2015-04-05 16:26:22

标签: ruby mechanize-ruby

我一直在尝试,但我无法在此页面上获得这些特定链接: http://www.windowsphone.com/en-us/store/top-free-apps 我想获取本页左侧的每个链接,例如娱乐,但我找不到合适的参考来获取它们。 这是剧本:

require 'mechanize'
agent = Mechanize.new
page = agent.get("http://www.windowsphone.com/en-us/store/top-free-apps")
page.links_with(???)

我该怎么做而不是???所以我不能得到这些链接? 我尝试了类似的东西:

page.links_with(:class => 'categoryNav navText')

OR

page.links_with(:class => 'categoryNav')

OR

page.links_with(:class => 'navText')

等 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用page.parser,您可以访问底层的Nokogiri对象。这允许您使用xpath进行搜索。

这里的想法是所有这些链接都有一个以'AppLeftMerch'开头的'data-ov'属性。我们可以使用'starts-with'函数来识别它们。

require 'mechanize'

agent = Mechanize.new
page = agent.get("http://www.windowsphone.com/en-us/store/top-free-apps")

page.parser.xpath("//a[starts-with(@data-ov,'AppLeftMerch')]").each do |link|
  puts link[:href]
end