在Rails中获取计算字体大小

时间:2013-07-30 14:02:44

标签: ruby ruby-on-rails-3 xpath nokogiri mechanize-ruby

我正在使用Rails 3抓取一个网站,并进行如下查询:

agent = Mechanize.new
doc = agent.get(url)

我正在做

doc.search("//div")

返回页面上所有div的列表。我想选择具有最大字体大小的div。无论如何使用Mechanize,Nokogiri或任何其他Rails gem来查找div的计算字体大小,并从那里选择具有最大字体大小的那个?

由于

1 个答案:

答案 0 :(得分:1)

你不能用Mechanize或Nokogiri这样做,因为他们只是阅读静态HTML。然而,字体大小通常不再在HTML中定义;它通常在CSS中定义或使用JavaScript以编程方式添加。

唯一的解决方案是能够执行JavaScript并使用JavaScript的getComputedStyle方法,该方法可以获得已应用于元素的字体大小(通过CSS或JS)。因此,您需要一种方法将JS注入您的页面并获得结果。这可能是使用watir-webdriver,因为Selenium有钩子来做到这一点。有关如何注入JS并将结果返回给Selenium中的调用者的说明,请参阅this page的最后一部分。另一个选择是PhantomJS,它是一个带JS API的无头浏览器。