0

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

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

然后我在做

doc.search("//div")

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

谢谢

4

1 回答 1

1

您无法使用 Mechanize 或 Nokogiri 执行此操作,因为它们只是读取静态 HTML。然而,字体大小通常不再在 HTML 中定义。它通常在 CSS 中定义或使用 JavaScript 以编程方式添加。

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

于 2013-08-15T00:41:46.083 回答